为什么我的shell脚本找不到任何东西(找。-name script.sh | grep watermelon)

时间:2010-03-25 05:23:34

标签: shell grep

我有一个脚本,我正在从主目录运行,以搜索名为“script.sh”的所有文件,其中包含字符串“watermelon”。它没有找到任何东西,但我可以在子目录中清楚地看到这些脚本。有人可以建议更改我正在使用的命令:

find . -name script.sh | grep watermelon

3 个答案:

答案 0 :(得分:2)

find返回默认找到的文件名。如果您希望它在文件中进行搜索,则需要将其传输到xargs或使用-exec-print谓词:

find . -name script.sh -exec grep -q watermelon {} \; -print

答案 1 :(得分:1)

您需要使用xargs:

find . -name script.sh | xargs grep watermelon

xargs将修改在文件中搜索的行为,而不仅仅是在文件名中搜索。

答案 2 :(得分:1)

使用-type f表示文件

find . -type f -name "script.sh" -exec grep "watermelon" "{}" +;

或者如果你有bash 4

shopt -s globstar
grep -Rl "watermelon" **/script.sh