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

sta*_*ons 2 linux find wc

到目前为止,我有这个:

find -name ".txt"
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*024 5

尝试:

find . -name '*.txt' | wc -l
Run Code Online (Sandbox Code Playgroud)

-l选项wc告诉它返回的行只是数。

改进(需要 GNU 查找)

如果任何 .txt 文件名包含换行符,则上面将给出错误的数字。这将适用于任何文件名:

find . -iname '*.txt' -printf '1\n' | wc -l
Run Code Online (Sandbox Code Playgroud)

-printf '1\n告诉find只打印1找到的每个文件名的行。这避免了文件名具有困难字符的问题。

例子

让我们创建两个.txt文件,一个文件名中有一个换行符:

$ touch dir1/dir2/a.txt $'dir1/dir2/b\nc.txt'
Run Code Online (Sandbox Code Playgroud)

现在,让我们找到 find 命令:

$ find . -name '*.txt'
./dir1/dir2/b?c.txt
./dir1/dir2/a.txt
Run Code Online (Sandbox Code Playgroud)

要计算文件:

$ find . -name '*.txt' | wc -l
3
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,答案是一个。但是,改进后的版本可以正常工作:

$ find . -iname '*.txt' -printf '1\n' | wc -l
2
Run Code Online (Sandbox Code Playgroud)