如何在 Linux 中计算目录及其子目录中的文件

在浏览 Linux 文件系统时,您可能会遇到包含大量文件的目录。 有时您需要在 Linux 系统中查找这些目录及其子目录中的文件数。 因为在这种情况下,手动计数不是一个实用的解决方案。 因此,在这篇文章中,我们将介绍一些其他快速方法来计算 Linux 操作系统中目录及其子目录中的文件。

方法#1 使用 find 命令

find 命令结合 wc 命令可以帮助您递归地计算文件。 find 命令查找并列出目录及其子目录中的所有文件,然后 wc 命令计算文件数。 这样,您可以递归地获取目录中的文件数。

以下是仅递归计算目录中文件的语法:

$ find <path> -type f | wc -l

例如,要计算当前目录中的所有文件,命令将是:

$ find -type f | wc -l

同样,要仅计算“文档”目录中的文件,命令将是:

$ find ~/Documents -type f | wc -l

要仅计算目录中的子目录,请使用 –type d,如下所示:

$ find <path> -type d | wc -l

要将文件和子目录都包含在计数中,请使用以下命令:

$ find <path> | wc -l

find 命令还使您能够将搜索限制在特定的目录级别。 下面是我们的 Documents 目录的目录树。

现在,例如,如果您想将特定目录中的文件最多计数 3 级(最多 ‘mydocs’ 目录),请使用命令行选项 ‘-maxdepth 3’:

$ find <path> -maxdepth 3 -type f| wc -l

此命令将最多计算 3 个级别的文件,顶层是“文档”目录。

同样,您也可以从特定级别开始计数。 例如,如果要从文件计数中排除前 2 个目录,可以使用命令行选项“-mindepth 2”。 ‘-mindepth 2’ 将告诉 find 命令在开始搜索之前向下 2 级。

$ find <path> -mindepth 2 -type f | wc -l

方法#2 使用 ls 命令

Linux 中的 ls 命令用于列出文件和目录。 使用 ls 和 wc 命令,我们可以获得特定目录中的文件数。 但是,请注意,此计数不包括子目录中的文件。

要查找目录中的文件数,请将其输出传递给 wc 命令,如下所示:

$ ls <path> | wc -l

如果不指定目录路径,则会统计当前工作目录中的文件,

这是我们的“文档”目录中 ls 命令的输出。

现在要计算“文档”目录中的文件数,命令将是:

$ ls -a <path> | wc -l

ls 命令将列出指定目录中的文件,而 wc 命令将统计文件的数量。 因此,在输出中,您将获得包括指定目录下的子目录在内的文件数。 请注意,此计数不会递归,因为它不会计算子目录下的文件。

要排除子目录并仅计算目录中的文件,请使用以下命令:

$ ls -p <path> | grep -v / | wc -l

要计算隐藏文件,请使用以下命令:

$ ls -Ap <path> | grep -v / | grep "^." | wc -l

方法#3 使用 tree 命令

tree 命令还告诉您目录下的文件和子目录的数量。 要计算特定目录下的文件和目录,请使用以下命令:

$ tree <path> | tail -1

在输出中,您将找到指定目录下的文件和目录的计数。

要也包含隐藏文件,请在 tree 命令中使用 -a 标志,如下所示:

$ tree -a <path> | tail -1

就这样! 在这篇文章中,我们介绍了如何在 Linux OS 上计算目录及其子目录中的文件。 我们已经讨论了三种不同的方法来计算目录中的文件,包括 ls、find 和 tree 命令。