目前我使用 grep 如下:
grep -lr <PATTERN> .
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出,包含其内容(不是名称)包含的所有文件的列表:
./path/to/file1
./path/to/file2
...
Run Code Online (Sandbox Code Playgroud)
这没关系,但知道行号会很有用。以下输出将是理想的,但通过 grep 的手册页,我似乎无法找出正确的开关:
./path/to/file1 15, 22, 54
./path/to/file2 16, 17
...
Run Code Online (Sandbox Code Playgroud)
这可以用 grep 或其他工具实现吗?
默认情况下ack会做类似的事情。您可以使用
$ ack blah
path/to/blah
16: blah blah
19: blah blah blah
path/to/more/blah
21: blahness
Run Code Online (Sandbox Code Playgroud)
如果你只想要匹配的文件名,你可以说ack -l. ack -lc会给你每个文件的匹配数。
grep -rins <pattern> *
Run Code Online (Sandbox Code Playgroud)
这符合您的要求吗?
如果您有更复杂的模式,例如使用 时egrep,则使用它可能会很有用egrep -rinos <pattern> *。
为了进一步提高可读性,请添加--color到参数列表中。就我个人而言,我的.zshrc:
export GREP_OPTIONS="--color"
Run Code Online (Sandbox Code Playgroud)