326

在 SO 上找不到这个。我在终端中运行了以下命令:

>> grep -Rl "curl" ./

这将显示出现关键字 curl 的文件列表。我想计算文件的数量。我能想到的第一种方法是计算终端中输出的行数。我怎样才能做到这一点?

4

4 回答 4

575

将结果传递给wc使用-l( line count ) 开关:

grep -Rl "curl" ./ | wc -l
于 2012-09-17T10:32:36.130 回答
64

将 EaterOfCode 的评论放在这里作为答案。

grep 本身也有 -c 标志,它只返回计数

所以命令和输出可能看起来像这样。

$ grep -Rl "curl" ./ -c
24

编辑:

虽然这个答案可能更短,因此看起来可能比接受的答案(即使用wc)更好。我不再同意这一点。我想记住你可以通过管道来计算行数wc -l更有用,因为你可以将它与其他程序一起使用grep

于 2015-09-13T12:34:37.920 回答
10

如果最后一行以换行符结尾(我知道在这种情况下,它会),则管道到“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将要回归的更接近现实。

于 2019-08-02T23:35:56.407 回答
2

"abcd4yyyy" | grep 4 -c给出计数为1

于 2021-01-20T16:08:37.050 回答