bash - 计算目录中的总文件数 - find vs ls

标签 bash find ls

有什么原因吗

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

反对

ls -1 | wc -l

(或者反之亦然?)

统计文件夹内文件/目录的总数

注意事项:

  1. 这道题更关心只是计算的东西。
  2. 没有以开头的文件。
  3. 可能有非标准文件,其中包含 \n

最佳答案

第一个命令...

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

...将列出以 . 开头的文件和目录,而您的 ls 命令不会。等效的 ls 命令是:

ls -A | wc -l

两者都会给你相同的答案。正如人们在评论中指出的那样,如果有包含嵌入换行符的条目,这两个都会给你错误的答案,因为上面的命令只是计算输出的行数。

这里有一种计算文件数量的方法,它独立于 文件名怪癖:

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0i echo | wc -l

这将文件名传递给带有 NUL 终止符的 xargs,而不是依赖换行符,然后 xargs 简单地为每个文件打印一个空行,我们计算xargs 的输出行数。

关于bash - 计算目录中的总文件数 - find vs ls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128759/

相关文章:

bash - 将变量名称作为参数传递给 bash 中的函数

linux - 脚本无法获取 "Not Valid Identifier"

function - 编写一个函数来运行一系列命令,zsh

jquery - 在具有相同类且是直接兄弟的两个 DIV 之间插入新 DIV

amazon-s3 - 在aws cli中的ls返回 "PRE"。为什么以及如何摆脱它

linux - 我可以列出逻辑卷上的文件和目录吗

linux - 如何在 Linux 中为 "ls"设置默认参数?

macos - 从 Bash shell 脚本发送邮件

mysql - 在 bash 中存储来自 sql select 的多个值

unity3d - 团结 |查找具有指定父对象的子游戏对象