【发布时间】:2010-03-25 05:23:33
【问题描述】:
我有一个从主目录运行的脚本,用于搜索所有包含字符串“watermelon”的名为“script.sh”的文件。它没有找到任何东西,但我可以在子目录中清楚地看到这些脚本。有人可以建议更改我正在使用的命令:
find . -name script.sh | grep watermelon
【问题讨论】:
我有一个从主目录运行的脚本,用于搜索所有包含字符串“watermelon”的名为“script.sh”的文件。它没有找到任何东西,但我可以在子目录中清楚地看到这些脚本。有人可以建议更改我正在使用的命令:
find . -name script.sh | grep watermelon
【问题讨论】:
你需要使用 xargs:
find . -name script.sh | xargs grep watermelon
xargs 将修改行为以在文件中搜索,而不仅仅是在文件名中搜索。
【讨论】:
find 返回默认找到的文件名。如果您希望它在文件中搜索,则需要将其通过管道传输到 xargs 或使用 -exec 和 -print 谓词:
find . -name script.sh -exec grep -q watermelon {} \; -print
【讨论】:
用-type f表示文件
find . -type f -name "script.sh" -exec grep "watermelon" "{}" +;
或者如果你有 bash 4
shopt -s globstar
grep -Rl "watermelon" **/script.sh
【讨论】: