在外壳中,我想列出与特定文件名模式匹配的每个文件的行数。我的方法是使用dir
选择文件,使用find
打印文件,然后使用-exec cat {}
计算行数。
|wc -l
打印所有内容,但是
find . -type f -name 'priceupdate*csv' -print0 -exec cat {} \;
警报
find . -type f -name 'priceupdate*csv' -print0 -exec cat {}|wc -l \;
谢谢!
答案 0 :(得分:1)
您可以使用xargs
:
find . -type f -name 'priceupdate*csv' -print0 | xargs -0 wc -l
或者您可以这样做:
find . -type f -name 'priceupdate*csv' -exec wc -l {} +
答案 1 :(得分:1)
exec
运行带有其参数的单个命令,而不是任意的shell命令。为此,您需要显式运行外壳程序。
find . -type f -name 'priceupdate*csv' -print0 -exec sh -c 'cat "$1" |wc -l' _ {} \;
通常,最好将{}
的扩展名作为参数传递,而不是尝试将其直接合并到命令中,以免由于shell解析而引起意外。
(我将这个答案限于所询问的问题,而不是涉及实际的shell命令涉及的各种问题。)