有什么原因吗
find . -mindepth 1 -maxdepth 1 | wc -l
反对
ls -1 | wc -l
(或者反之亦然?)
统计文件夹内文件/目录的总数
注意事项:
- 这道题更关心只是计算的东西。
- 没有以
开头的文件。
- 可能有非标准文件,其中包含
\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/