如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
当前回答
我编写了ffcnt来加快特定情况下的递归文件计数:支持区段映射的旋转磁盘和文件系统。
它可能比ls或基于find的方法快一个数量级,但是YMMV。
其他回答
假设你想要一个每个目录的文件总数,试试:
for d in `find YOUR_SUBDIR_HERE -type d`; do
printf "$d - files > "
find $d -type f | wc -l
done
对于当前目录,尝试这样做:
for d in `find . -type d`; do printf "$d - files > "; find $d -type f | wc -l; done;
如果你有很长的空格名,你需要改变IFS,像这样:
OIFS=$IFS; IFS=$'\n'
for d in `find . -type d`; do printf "$d - files > "; find $d -type f | wc -l; done
IFS=$OIFS
如果你想知道当前目录下每个目录下有多少文件:
for i in */ .*/ ; do
echo -n $i": " ;
(find "$i" -type f | wc -l) ;
done
当然,这些都可以写在一行上。括号说明wc -l应该监视谁的输出(在本例中查找$i -type f)。
这将完全正常工作。简单的短。如果要计算文件夹中存在的文件数量。
ls | wc -l
这里有很多正确答案。这是另一个!
find . -type f | sort | uniq -w 10 -c
在哪里。是要查找的文件夹,10是对目录进行分组的字符数。
我们可以使用树命令来递归地显示所有的文件和文件夹。以及它显示在最后一行输出的文件夹和文件的计数。
$ tree path/to/folder/
path/to/folder/
├── a-first.html
├── b-second.html
├── subfolder
│ ├── readme.html
│ ├── code.cpp
│ └── code.h
└── z-last-file.html
1 directories, 6 files
对于树命令的最后一行输出,我们可以在它的输出上使用tail命令
$ tree path/to/folder/ | tail -1
1 directories, 6 files
为了安装树,我们可以使用下面的命令
$ sudo apt-get install tree