【发布时间】:2012-09-09 13:30:39
【问题描述】:
在 SO 上找不到这个。我在终端中运行了以下命令:
>> grep -Rl "curl" ./
这将显示出现关键字 curl 的文件列表。我想计算文件的数量。我能想到的第一种方法是计算终端中输出的行数。我该怎么做?
【问题讨论】:
-
grep 本身也有
-c标志,它只返回计数
在 SO 上找不到这个。我在终端中运行了以下命令:
>> grep -Rl "curl" ./
这将显示出现关键字 curl 的文件列表。我想计算文件的数量。我能想到的第一种方法是计算终端中输出的行数。我该怎么做?
【问题讨论】:
-c 标志,它只返回计数
使用-l(行数)开关将结果传送到wc:
grep -Rl "curl" ./ | wc -l
【讨论】:
grep "" -c,但这更好:)
grep -c 而不是将输出通过管道传输到另一个程序。例如。您甚至不会使用 Word 以外的其他文本编辑器更改 Word 文档中的字符,对吗?
grep -c 没有回答。
将 EaterOfCode 的评论放在这里作为答案。
grep 本身也有 -c 标志,它只返回计数
所以命令和输出可能如下所示。
$ grep -Rl "curl" ./ -c
24
编辑:
虽然这个答案可能更短,因此看起来比公认的答案更好(即使用wc)。我不再同意这一点。我想记住你可以通过管道到wc -l 来计算行数更有用,因为你可以将它与grep 之外的其他程序一起使用。
【讨论】:
如果最后一行以换行符结尾(我知道在这种情况下会这样),则管道到“wc”可能会更好
但是,如果最后一行没有以换行符结尾,'wc -l' 会返回错误结果。
例如:
$ echo "asd" | wc -l
将返回1 和
$ echo -n "asd" | wc -l
将返回0
所以我经常使用的是grep <anything> -c
$ echo "asd" | grep "^.*$" -c
1
$ echo -n "asd" | grep "^.*$" -c
1
这比wc -l 将返回的更接近现实。
【讨论】:
"abcd4yyyy" | grep 4 -c 给出的计数为1
【讨论】: