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

我发现了这个:

find DIR_NAME -type f ¦ wc -l

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

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


当前回答

如果你想知道当前目录下每个目录下有多少文件:

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

当然,这些都可以写在一行上。括号说明wc -l应该监视谁的输出(在本例中查找$i -type f)。

其他回答

这将完全正常工作。简单的短。如果要计算文件夹中存在的文件数量。

ls | wc -l
ls -l | grep -e -x -e -dr | wc -l 

长串 过滤文件和dirs 计算过滤后的行号

假设你想要一个每个目录的文件总数,试试:

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

这里有很多正确答案。这是另一个!

find . -type f | sort | uniq -w 10 -c

在哪里。是要查找的文件夹,10是对目录进行分组的字符数。

找到-type f | wc -l

OR(如果目录是当前目录)

找到。-type f | wc -l