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

时间:2016-10-27 22:38:57

标签: linux find wc

到目前为止,我有这个:

find -name ".txt"

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

2 个答案:

答案 0 :(得分:1)

尝试:

    Total pre-main time: 2.2 seconds (100.0%)
     dylib loading time: 1.4 seconds (64.5%)
    rebase/binding time: 205.99 milliseconds (9.2%)
        ObjC setup time:  84.90 milliseconds (3.8%)
       initializer time: 496.64 milliseconds (22.3%)
       slowest intializers :
         libSystem.B.dylib :  21.82 milliseconds (0.9%)
      libglInterpose.dylib : 156.49 milliseconds (7.0%)
     libMTLInterpose.dylib :  47.01 milliseconds (2.1%)
                   AppName : 224.40 milliseconds (10.0%)

find . -name '*.txt' | wc -l 的{​​{1}}选项告诉它只返回行数。

改进(需要GNU查找)

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

-l

wc告诉find . -iname '*.txt' -printf '1\n' | wc -l 仅为找到的每个文件名打印行-printf '1\n。这避免了文件名有困难字符的问题。

实施例

让我们创建两个find个文件,其中一个名称中有换行符:

1

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

.txt

计算文件:

$ touch dir1/dir2/a.txt $'dir1/dir2/b\nc.txt'

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

$ find . -name '*.txt'
./dir1/dir2/b?c.txt
./dir1/dir2/a.txt

答案 1 :(得分:0)

find -type f -name "*.h" -mtime +10 -print | wc -l

这就成功了。