【问题标题】:Why does my shell script not find anything (find . -name script.sh | grep watermelon)为什么我的 shell 脚本找不到任何东西(查找 .-name script.sh | grep 西瓜)
【发布时间】:2010-03-25 05:23:33
【问题描述】:

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

find . -name script.sh | grep watermelon

【问题讨论】:

    标签: shell grep


    【解决方案1】:

    你需要使用 xargs:

    find . -name script.sh | xargs grep watermelon
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        -type f表示文件

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

        或者如果你有 bash 4

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

        【讨论】:

          猜你喜欢
          • 2010-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-16
          • 1970-01-01
          • 2021-05-10
          • 2012-02-27
          • 1970-01-01
          相关资源
          最近更新 更多