在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
答案 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
更整洁:-)。虽然循环对于更复杂的事情很有用。