Linux递归创建目录命令:递归计数 Linux目录中的文件(linux count files in directory re

如何递归地计算 Linux 目录中的文件?

我发现这个:

find DIR_NAME -type f ¦ wc -l

但是当我运行它返回以下错误。

查找:路径必须在表达式之前:

1731

这应该有效:

find DIR_NAME -type f | wc -l

说明:

-type f以仅包含文件。

|而不是¦)将find命令的标准输出重定向到wc命令的标准输入。

wc(字数的缩写)对其输入(docs)上的换行,单词和字节进行计数。

-l只计算换行符。

Notes:

DIR_NAME替换为.以在当前文件夹中执行命令。

您还可以删除-type f以在计数中包含目录(和符号链接)。

如果文件名可以包含换行符,则此命令可能会过量。

为什么您的示例不起作用的说明:

在您显示的命令中,您不使用“Pipe”(|)来连接两个命令,而是使用 shell 不识别为命令或类似命令的断条(¦)。

129

对于当前目录:

find -type f | wc -l
96

如果您想了解当前目录下每个目录中的文件数量:

for i in */ .*/ ; do 
    echo -n $i": " ; 
    (find "$i" -type f | wc -l) ; 
done

当然,这可以在一行上进行。括号阐明了应该监视谁的输出wc -l(在这种情况下为find $i -type f)。

87

在我的电脑上,rsync比接受的答案中的find | wc -l快一点:

$ rsync --stats --dry-run -ax /path/to/dir /tmp
Number of files: 173076
Number of files transferred: 150481
Total file size: 8414946241 bytes
Total transferred file size: 8414932602 bytes

第二行有文件的数量,150,481 在上面的例子中,作为奖励,你得到的总大小(以字节为单位)。

备注:

第一行是文件,目录,符号链接等的计数,这就是为什么它比第二行大。

--dry-run(或-n)选项对于不实际传输文件很重要!

我使用-x选项来“不跨越文件系统边界”,这意味着如果您为/执行它,并且您连接了外部硬盘,它将只计算根分区上的文件。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(475)
Browse c:C#-浏览文件夹和二进制阅读器(binary reader)
上一篇
飞鱼crm是什么东西:什么东西-(减号)是什么意思 (what does minus mean)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(32条)