假设我需要找出每个文件名称中包含“work”一词的文件中有多少个单词。
我知道,要查找名称中带有“work”的文件,可以使用ls work
。要找出文件中的单词数,可以使用wc -w
。
但是我尝试了以下操作,它似乎仅显示文件数,而不是所有文件中单词数的总和(我需要):
ls work | wc -w
因此,如果有 14 个文件的名称中包含“work”,则会显示 14,而不是单词数。
答案1
语法是wc -w [FILE]
。如果你不使用FILE而是在输出中使用管道,ls work
它只会计算它在stdin上读取的内容。
您需要通过管道传输文本本身:
cat *work* | wc -w
您也可以使用 执行wc
。find -exec
但请注意,如果文件很多,这可能会显示多个“总计”金额,因为find
会多次调用。wc
find ./ -type f -name "*work*" -exec wc -w {} +
答案2
您可以运行wc
多个文件,然后使用内置的 shell*
将工作目录中的每个非隐藏文件添加到wc
的参数中。
wc -w *work*
答案3
这里有一些不错的答案,但对于这个我喜欢使用:
ls | grep work | xargs wc -w