在SO上找不到这个.我在终端中运行了以下命令:
>> grep -Rl "curl" ./
Run Code Online (Sandbox Code Playgroud)
这将显示关键字curl发生的文件列表.我想计算文件数量.我能想到的第一种方法是计算终端中输出的行数.我怎样才能做到这一点?
Joã*_*lva 433
将结果传递给wc使用-l(行计数)开关:
grep -Rl "curl" ./ | wc -l
Run Code Online (Sandbox Code Playgroud)
Jel*_*teF 55
将EaterOfCode的评论作为答案.
grep本身也有-c标志,它只返回计数
所以命令和输出可能看起来像这样.
$ grep -Rl "curl" ./ -c
24
Run Code Online (Sandbox Code Playgroud)
编辑:
虽然这个答案可能更短,因此可能看起来比接受的答案(即使用wc)更好.我不同意这个.我想要记住你可以通过管道来计算线条wc -l更有用,因为你可以将它与其他程序一起使用grep.
小智 7
如果最后一行以换行符结尾,则管道到 'wc' 可能会更好(我知道在这种情况下,它会)
但是,如果最后一行不以换行符结尾,则 'wc -l' 会返回错误结果。
例如:
$ echo "asd" | wc -l
Run Code Online (Sandbox Code Playgroud)
将返回1并
$ echo -n "asd" | wc -l
Run Code Online (Sandbox Code Playgroud)
将返回 0
所以我经常使用的是 grep <anything> -c
$ echo "asd" | grep "^.*$" -c
1
$ echo -n "asd" | grep "^.*$" -c
1
Run Code Online (Sandbox Code Playgroud)
这比wc -l将要返回的更接近现实。