我正在尝试计算目录中文件的总行数。为此,我尝试结合使用 find 和 wc。但是,当我运行 find 时。 -exec wc -l {}\;
,我收到错误 find: missing argument to -exec
。我看不到任何明显的问题,有什么想法吗?
最佳答案
您只需要在 {}
和 \;
find . -exec wc -l {} \;
请注意,如果当前位置有任何子目录,wc
将为它们中的每一个生成如下所示的错误消息:
wc: ./subdir: Is a directory
为避免该问题,您可能需要告诉 find
将搜索限制为文件:
find . -type f -exec wc -l {} \;
另一个注意事项:使用 -exec
选项是个好主意。太多次人们将命令组合在一起,想得到相同的结果,例如这里是:
find . -type f | xargs wc -l
以这种方式使用管道命令的问题是,如果任何文件中有空格,它就会中断。例如,如果文件名为“a b”,wc
将分别收到“a”和“b”,您显然会收到 2 条错误消息:a: no such file
和 b: 没有这样的文件
。
除非您知道您的文件名中从来没有任何空格(或不可打印字符),否则如果您确实需要将命令组合在一起,则需要告诉所有工具您将管道连接在一起以使用 NULL 字符 (\0) 作为分隔符而不是空格。所以之前的命令会变成:
find . -type f -print0 | xargs -0 wc -l
关于linux - find -exec 无法识别参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221372/