递归计数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 )。

    链接地址: http://www.djcxy.com/p/13721.html

    上一篇: Recursively counting files in a Linux directory

    下一篇: exec with multiple commands