Recursively counting files in a Linux directory
How can I recursively count files in a Linux directory?
I found this:
find DIR_NAME -type f ¦ wc -l
But when I run this it returns the following error.
find: paths must precede expression: ¦
This should work:
find DIR_NAME -type f | wc -l
Explanation:
-type f to include only files. | ( and not ¦ ) redirects find command's standard output to wc command's standard input. wc (short for word count) counts newlines, words and bytes on its input (docs). -l to count just newlines. Notes:
DIR_NAME with . to execute the command in the current folder. -type f to include directories (and symlinks) in the count. Explanation of why your example does not work:
In the command you showed, you do not use the "Pipe" ( | ) to kind-of connect two commands, but the broken bar ( ¦ ) which the shell does not recognize as a command or something similar. That's why you get that error message.
对于当前目录:
find . -type f | wc -l
If you want a breakdown of how many files are in each dir under your current dir:
for i in $(find . -maxdepth 1 -type d) ; do
echo -n $i": " ;
(find $i -type f | wc -l) ;
done
That can go all on one line, of course. The parenthesis clarify whose output wc -l is supposed to be watching ( find $i -type f in this case).
上一篇: BufferedInputStream字符串转换?
下一篇: 递归计数Linux目录中的文件
