如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
当前回答
你可以使用
$ tree
安装后的树包用
$ sudo apt-get install tree
(在Debian / Mint / Ubuntu Linux机器上)。
该命令不仅显示文件的计数,还分别显示目录的计数。选项-L可用于指定最大显示级别(默认情况下,它是目录树的最大深度)。
通过提供-a选项,也可以包含隐藏文件。
其他回答
如果你想知道当前目录下每个目录下有多少文件:
for i in */ .*/ ; do
echo -n $i": " ;
(find "$i" -type f | wc -l) ;
done
当然,这些都可以写在一行上。括号说明wc -l应该监视谁的输出(在本例中查找$i -type f)。
这里有很多正确答案。这是另一个!
find . -type f | sort | uniq -w 10 -c
在哪里。是要查找的文件夹,10是对目录进行分组的字符数。
这将完全正常工作。简单的短。如果要计算文件夹中存在的文件数量。
ls | wc -l
在我的电脑上,rsync比在接受的答案中找到| 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选项来“不跨越文件系统边界”,这意味着如果你为/执行它,并且附加了外部硬盘,它只会计算根分区上的文件。
可以使用ncdu命令。它将递归地计算Linux目录包含多少文件。下面是一个输出示例:
它有一个进度条,如果你有很多文件,这很方便:
在Ubuntu上安装:
sudo apt-get install -y ncdu
基准:我使用https://archive.org/details/cv_corpus_v1.tar(380390个文件,11 GB)作为文件夹,其中必须计算文件的数量。
找到。-type f | wc -l:大约1m20s完成 Ncdu:大约1m20s完成