你怎么从'发现'中得到结果?

ree*_*rix 4 bash terminal grep find

尝试查找find命令的结果文件名中包含的单词/模式.

例如,我有这个命令:

find . -name Gruntfile.js 返回多个文件名.

我如何在这些字模式中进行grep?

正在思考一些事情:

find . -name Gruntfile.js | grep -rnw -e 'purifycss'

但是,这是行不通的..

Tom*_*ech 7

使用该-exec {} +选项将作为参数找到的文件名列表传递给grep:

find -name Gruntfile.js -exec grep -nw 'purifycss' {} +
Run Code Online (Sandbox Code Playgroud)

这是最安全和最有效的方法,因为当文件的路径不"良好"(例如包含空格)时它不会中断.与使用方法类似xargs,它还通过一次传递多个文件名来最小化对grep的调用次数.

我删除了-e-r切换,因为我不认为它们对你有用.

  • 读者可能会发现知道您可以在较长的 find 表达式中使用 `-exec cmd \;` 作为谓词很有用。例如,假设 OP 想要在 git 中暂存匹配的 gruntfiles。`find -name Gruntfile.js -exec grep -qw purifycss {} \; -exec git add {} +` (2认同)