到目前为止,我有这个:
find -name ".txt"
我不太确定如何使用wc来找出文件的确切数量。使用上面的命令时,会显示所有.txt文件,但我需要确切的数量的扩展名为.txt的文件。请不要建议使用其他命令,因为我想专门使用find和wc。感谢
尝试:
find . -name '*.txt' | wc -l
wc
的-l
选项告诉它只返回行数。
改进(需要GNU查找(
如果任何.txt文件名包含换行符,则上面给出的数字都是错误的。这将正确使用任何文件名:
find . -iname '*.txt' -printf '1n' | wc -l
-printf '1n
告诉find
为找到的每个文件名只打印行1
。这样就避免了文件名中有困难字符的问题。
示例
让我们创建两个.txt
文件,其中一个文件的名称中有一个换行符:
$ touch dir1/dir2/a.txt $'dir1/dir2/bnc.txt'
现在,让我们找到find命令:
$ find . -name '*.txt'
./dir1/dir2/b?c.txt
./dir1/dir2/a.txt
计数文件:
$ find . -name '*.txt' | wc -l
3
正如你所看到的,答案是否定的。然而,改进后的版本工作正常:
$ find . -iname '*.txt' -printf '1n' | wc -l
2
find -type f -name "*.h" -mtime +10 -print | wc -l
这就成功了。