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