网站搜索

在 Linux 上计算目录中文件数量的 5 种方法


厌倦了手动计数文件?自动对它们进行计数,包括隐藏的。

要点

  • Linux 上的“ls”命令列出文件和目录。通过管道将其连接到“wc -l”会计算文件和目录的总数,包括隐藏的文件和目录。
  • “tree”命令递归地显示整个目录结构,并在最后总结文件计数。添加“-a”选项也会显示隐藏文件。
  • 带有 -type、-mindepth 和 -maxdepth 等选项的“find”命令可以递归地对文件和目录进行计数。使用“-type f”仅计算文件,使用“-type d”仅计算目录。

使用 Linux 等操作系统时,管理文件是基本任务之一。如果您是 Linux 管理员,想象一下您必须处理的文件数量。如果您的文件占用大量磁盘空间,那么这将是一个棘手的问题。让我们讨论一些计算这些文件的方法,包括讨厌的隐藏文件。

为什么我们需要在 Linux 上统计文件数量?

如果您是 Linux 管理员或刚刚开始使用 Linux 命令,您最终将需要对 Linux 目录中的文件进行计数。您可能需要释放系统上的空间、计划备份系统文件并估计要备份的数据量,或者只是想让文件井井有条。这是每个 Linux 用户都需要知道如何完成的任务。

假设在工作时,您的系统耗尽了索引节点。突然,您面临可怕的“设备上没有空间”错误,并且无法创建任何新文件或目录。这时就该卷起袖子,通过计数来管理消耗磁盘的文件和目录了。幸运的是,有一些 Linux 命令可以完成这个任务。

使用 wc 命令计算文件和目录(包括隐藏文件)

在 Linux 上,ls 命令可以列出所有文件和目录。当使用 wc 命令通过管道传输 (|) 时,此命令会产生文件和目录(包括隐藏文件和目录)的总数。

在开始计算文件数之前,让我们使用 ls 命令列出 ~/HTG 目录中的实际文件。这里我们总共有十个文件,包括〜/HTG主目录中的四个子目录。有 1 个隐藏文件、1 个文本文件和 4 个测试文件。

要列出文件,建议使用 ls-A 代替 ls -a 。这 ls 命令与 -a 选项包括特殊条目 - (.) 当前目录和 (..) 父目录。这会导致文件数量总体增加。

要计算文件和目录的数量,首先导航到该目录并执行以下命令:

ls | wc -l

首先,ls 命令列出了 ~/HTG 目录中的所有文件和目录,不带任何格式选项。 ls 的输出由文件和目录名称的简单列表组成,每个名称位于单独的行上。

为了对 ls 命令列出的文件进行计数,我们将其输出通过管道 (|) 传送到 wc -l 命令。 wc 命令对这些列出的文件进行计数并输出文件计数。请记住此命令输出 9,因为它不包含 ~/HTG 目录中存在的一个隐藏文件。

我们有不同的选项可以与 ls 命令一起使用。例如,ls -l 使用长列表格式(-l) 列出当前目录中的文件和目录。它提供有关每个文件的详细信息,包括权限、所有者、大小和修改日期。

ls -l | wc -l

此命令不包括隐藏文件,但它包括长列表格式的目录本身条目(由 . 表示),在本例中为 ~/HTG 目录。结果,它使总数增加了 1。

如果无论列表格式如何,您都希望获得一致的计数,则可以在计数时使用 -A 选项和 ls 来排除特殊条目 (.) 当前目录和 (..) 父目录:

ls -A | wc -l

这应该提供与 ls -l 命令相同的计数。输出为 10,因为该命令还包含一个隐藏文件。

如果您想要一个在总计数中包含隐藏文件、父目录 (..) 和当前目录 (.) 的命令,请使用 ls -a 选项和 wc命令。

ls -a | wc -l

相关:如何在 Linux 中使用 wc 命令

使用 tree 命令计算文件和目录的数量

要统计所有子目录中的文件和目录的数量,可以使用tree命令。 tree 命令递归地打印整个目录结构,并在输出末尾显示摘要。

<directory> tree

您可能会发现树命令丢失错误,要解决它,请使用以下命令安装树命令:

对于 Ubuntu/Debian 主机: sudo apt install tree 对于 CentOS/RHEL 主机: sudo yum install tree

默认情况下,tree 命令不打印隐藏文件。要显示隐藏文件,请使用 -a 选项和 tree 命令:

tree -a

现在所有文件都被列出并计数,包括隐藏的文件。

相关:如何在 Linux 上遍历目录树

使用 find 命令递归计算文件数

Linux 上的 find 命令具有各种选项,例如 -type-mindepth-maxdepth,可以帮助轻松执行递归计数。它确定目录结构中项目的总数,而无需手动导航到每个子目录并逐一计数。

find <directory> <options> | wc -l

find 命令使搜索递归,因为默认情况下它会遍历每个子目录。它不会在第一深度停止搜索。

要计算目录中的所有条目(文件和文件夹),请使用:

find HTG | wc -l

此命令还对当前目录进行计数,在本例中为 ~/HTG — 总体上将搜索结果加一。

没有任何特定条件的 find 命令默认在其搜索中包括常规文件和隐藏文件。

要仅对文件进行计数,请使用:

find HTG -type f | wc -l

要仅计算包括当前目录在内的目录(在本例中为 ~/HTG),请使用:

find HTG -type d | wc -l

find 命令还可以搜索与特定模式匹配的文件(“.txt”、“.pdf”、“.sh”):

find . -type f -name "*.txt" | wc -l

此命令输出当前目录中以“.txt”扩展名结尾的文件数。

当您计算文件夹及其子文件夹中的文件数时,有时您将无法查看所有子文件夹,因此您的系统可能会显示“权限被拒绝”之类的错误。

您可以使用称为“输出重定向”的技术来重定向这些错误消息。

find /etc -type f 2> /dev/null | wc -l

我们还可以使用“minDepth”和“MaxDepth”选项修改搜索结果。

find HTG -mindepth 1 -maxdepth 1 | wc -l

在本例中,-mindepth 1 表示搜索从最小深度 1 开始,跳过根目录本身并在其直接子目录中开始搜索。

-maxdepth 1 选项以最大深度 1 进行搜索。它不会探索直接子目录的子目录。

相关:如何在 Linux 中使用 find 命令

使用 Bash 脚本对 Linux 目录中的文件进行计数

在 Linux 上,Bash 脚本可以自动执行重复任务。这里的情况也是如此,我们可以编写一个 bash 脚本并定义一个目录来统计其中存在的文件。

给定的 bash 脚本使用通过 wc 管道传输的 find 命令来计算 ~/HTG 目录中的所有文件。该脚本执行时输出 11,因为它还对当前目录进行计数,将结果加一。

#!/bin/bash
dir="HTG"
count=$(find "$dir"; | wc -l)
echo "There are $count files in the $dir directory."

如 find 命令中所述,要从最终计数中排除特殊目录,请向 find 命令添加 -mindepth 1 选项。

使用 GUI 计算文件数量

在 Linux 上使用 KDE 或 GNOME 等桌面界面计算文件数量非常简单!这就像在 Windows 上计算文件数一样。

通过转到活动菜单或使用“主”目录打开要检查的目录或文件夹。

右键单击该文件夹并选择“属性”选项。

弹出一个新窗口,显示文件夹中的项目总数。

请记住,此方法仅显示所有项目(例如“文本文件”、“.sh 文件”和“目录”)的总数,而不计算单个文件。至少,Ubuntu 的默认文件浏览器 Nautilus 没有,但其他浏览器(例如 Dolphin Browser)确实会向您显示更多数据。

检查文件计数所需的权限

执行所有这些命令时,请确保您拥有工作文件夹所需的权限。如果遇到权限错误,请在命令前键入“sudo”。另外,请检查命令的语法,以防遇到任何错误。要充分利用这些命令,请使用“man”命令参阅各自的帮助指南。

相关文章: