如何使用find命令和wc命令来查找目录和所有子目录中所有.txt文件的数量



到目前为止,我有这个:

find -name ".txt"

我不太确定如何使用wc来找出文件的确切数量。使用上面的命令时,会显示所有.txt文件,但我需要确切的数量的扩展名为.txt的文件。请不要建议使用其他命令,因为我想专门使用findwc。感谢

尝试:

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

这就成功了。

最新更新