Unix:如何计算目录中所有文件中包含字符串的所有行,并分别查看每个文件的输出

时间:2016-02-04 08:44:05

标签: unix grep wc

在UNIX中,我可以执行以下操作:

grep -o 'string' myFile.txt | wc -l

将计算包含字符串的myFile.txt中的行数。 或者我可以使用:

grep -o 'string' *.txt | wc -l

将计算包含该字符串的文件夹中所有.txt扩展名文件中的行数。 我正在寻找一种方法来对文件夹中的所有文件进行计数,但是要查看每个文件的输出,例如:

  

myFile.txt 10000

     

myFile2.txt 20000

     

myFile3.txt 30000

我希望我已经清楚了,如果不是,你可以在输出中看到一个有点接近的例子:

wc -l *.txt

2 个答案:

答案 0 :(得分:5)

为什么不简单地使用计算匹配线的grep -c?根据{{​​3}}它甚至在POSIX中,所以应该在任何地方工作。

顺便提一下,你使用-o会使你的命令计算字符串的每一个出现次数,而不是每一行都有出现:

$ cat > testfile
hello hello
goodbye
$ grep -o hello testfile
hello
hello

您正在进行正则表达式搜索,这可能与字符串搜索不同(请参阅字符串搜索的-F标志)。

答案 1 :(得分:0)

对所有文件使用循环,例如

for f in *.txt; do echo -n $f $'\t'; echo grep 'string' "$f" | wc -l; done

但我必须承认@ Yann的grep -c更整洁:-)。虽然循环对于更复杂的事情很有用。