Dav*_*osh 19
而且一直很受欢迎
find . -name '*.java' | xargs grep -l 'string'
Run Code Online (Sandbox Code Playgroud)
编辑(由弗兰克 Szczerba):
如果您正在处理包含空格的文件名或目录,最安全的方法是:
find . -name '*.java' -print0 | xargs -0 grep -l 'string'
Run Code Online (Sandbox Code Playgroud)
总是有不止一种方法可以做到。
小智 11
传统的 UNIX 答案将是这个问题所接受的答案:
find . -name '*.java' | xargs grep -l 'string'
Run Code Online (Sandbox Code Playgroud)
这可能适用于 Java 文件,但文件名中的空格在 Mac 上比在传统 UNIX 世界中更常见。当带有空格的文件名通过上面的管道时,xargs 会将单个单词解释为不同的名称。
您真正想要的是对名称进行空分隔以使边界明确:
find . -name '*.java' -print0 | xargs -0 grep -l 'string'
Run Code Online (Sandbox Code Playgroud)
另一种方法是让 find 为您运行 grep,正如 Mark 建议的那样,但如果您正在搜索大量文件,这种方法会较慢(因为 grep 对每个文件调用一次,而不是对整个文件列表调用一次)。
使用比 grep, ack更好的 grep :
ack -l --java "string"
Run Code Online (Sandbox Code Playgroud)
grep -rl --include="*.java" simplestring *
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16231 次 |
| 最近记录: |