递归计数Linux目录中的文件
我如何递归计算Linux目录中的文件?
我找到了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它会返回以下错误。
发现:路径必须在表达式之前:|
这应该工作:
find DIR_NAME -type f | wc -l
说明:
-type f
只包含文件。 |
( 而不是¦
)重定向find
命令的标准输出到wc
命令的标准输入。 wc
(单词计数的简写)在其输入(文档)上计算换行符,单词和字节。 -l
只算换行符。 笔记:
DIR_NAME
替换为.
在当前文件夹中执行该命令。 -type f
以在计数中包含目录(和符号链接)。 解释你的例子不起作用的原因:
在你显示的命令中,你不使用“Pipe”( |
)来连接两个命令,而是使用shell无法识别的命令或类似命令( ¦
)。 这就是为什么你得到这个错误信息。
对于当前目录:
find . -type f | wc -l
如果您想要了解当前目录下每个目录中有多少个文件,请执行以下操作:
for i in $(find . -maxdepth 1 -type d) ; do
echo -n $i": " ;
(find $i -type f | wc -l) ;
done
当然,这可以全部在一条线上。 圆括号阐明了谁的输出wc -l
应该在看(在这种情况下find $i -type f
)。