264 在SO上找不到此。我在终端中运行以下命令: >> grep -Rl "curl" ./ 并显示出现关键字curl的文件列表。我要计算文件数。我能想到的第一种方法是计算终端中输出的行数。我怎样才能做到这一点? bash terminal — 鲁朋克 source 40 grep本身也具有-c仅返回计数的标志 — EaterOfCode 2014年 相关阅读:unix.stackexchange.com/questions/248245/... — AlikElzin-kilaka
475 将结果wc通过管道传递给-l(行数)开关: grep -Rl "curl" ./ | wc -l — 若昂席尔瓦 source 1 我一直在使用,grep "" -c但这要好得多:) — ninhenzo64 3 应该注意的是,这种将管道连接到wc的技巧将适用于任何输出,而不仅仅是grep输出。例如,可以将其与git diff结合使用。 — Jason L. 1 为什么这是公认的答案?正如一些评论提到的那样,grep -c应该使用内置函数,而不是将输出通过管道传递到另一个程序。例如,您甚至不会使用Word以外的其他文本编辑器来更改Word文档中的字符,对吗? — Michael P
57 将EaterOfCode的注释放在此处作为答案。 grep本身也有-c标志,它仅返回计数 因此命令和输出看起来像这样。 $ grep -Rl "curl" ./ -c 24 编辑: 尽管此答案可能更短,因此可能看起来比接受的答案(使用wc)要好。我不再同意这一点。我想记住,您可以通过管道计数来计算行数,wc -l因为您可以将其与其他程序一起使用,这比以前还要有用grep。 — 耶尔特 source
5 如果最后一行以换行符结尾,则将其传递给“ 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。 — GCS source
-c
仅返回计数的标志