查找文件夹和子文件夹中的文件数?

top*_*ess 185 command-line find

我想找到一个文件夹及其所有子文件夹下的文件总数。

sag*_*ise 275

可能是这样的

find . -type f | wc -l

会做的伎俩。尝试来自父文件夹的命令。

find . -name <pattern> -type f查找所有˚F在尔斯.和子文件夹。结果(文件的列表中找到)传递(|)来wc -l进行计数的数量分级表。-name <pattern>只查找某些文件。

  • @arrange:更快:`find 。-type f -printf 。| wc -c` - 我采用 print 作为我的解决方案,而不是我的 -exec echo 。 (17认同)
  • 该解决方案将在名称包含换行符的文件上失败。 (3认同)
  • @user 未知:`find 。-type f -ls | wc -l` (2认同)
  • 甚至更快:`find 。-type f -print0 | tr -d -c '\0' | wc -c` (2认同)

Egi*_*gil 30

使用tree命令。您可能需要安装该tree软件包。

它将列出给定文件夹下的所有文件和文件夹,并在最后列出摘要。


use*_*537 21

要计算当前目录根目录下的文件(甚至没有扩展名的文件),请使用:

ls -l | grep ^- | wc -l
Run Code Online (Sandbox Code Playgroud)

要从当前目录的根目录递归计算文件(甚至没有扩展名的文件),请使用:

ls -lR | grep ^- | wc -l
Run Code Online (Sandbox Code Playgroud)

  • 那些不会计算隐藏文件。 (2认同)

not*_*bit 15

最快和最简单的方法是使用tree. 它的速度受您的输出终端的限制,因此如果您将结果通过管道传输到tail -1,您将立即获得结果。您还可以使用该-L选项控制您喜欢结果的目录级别。对于彩色输出,请使用-C. 例如:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
Run Code Online (Sandbox Code Playgroud)

如果它不在那里,你可以在这里得到它。


use*_*own 11

find -type f -printf . | wc -c
Run Code Online (Sandbox Code Playgroud)

不要计算 find 的输出行数,因为包含 99 个换行符的文件名将计为 100 个文件。

  • @DisgruntledGoat:因此很难找到错误。 (8认同)
  • 包含新行的文件名是一种非常罕见的边缘情况。 (4认同)

小智 5

对路径中的每个文件夹使用此命令

for D in *; do echo $D; find $D -type f| wc -l; done
Run Code Online (Sandbox Code Playgroud)