【问题标题】:How to implement grep in bash scripting? [duplicate]如何在 bash 脚本中实现 grep? [复制]
【发布时间】:2016-12-05 06:25:38
【问题描述】:

我正在使用 grep 在目录中搜索文件上的字符串(在 for 循环中)

for file in .* *; do 
    if [[ -f "$file" && `grep -r "$pattern" "$file"` ]]; then
    path=`pwd`/"$file"
    echo "$path"
    fi
done

【问题讨论】:

  • 好的,您是否收到错误或没有结果等?花点时间提出您的问题以获得快速响应。
  • 缺少结束fi;和结束done;,按此顺序。
  • 如果字符串不止一次出现怎么办,即在不同的文件中?
  • 当您只将-r添加到grep时,它是不必要的; -r 仅在将目录作为grep 的参数给出时才有效。但是为什么不让grep 来做呢?

标签: bash unix scripting


【解决方案1】:

避免 for 循环并使用类似的东西

grep -l "${pattern}" ${PWD}/.* ${PWD}/*

或更好

find ${PWD} -type f -exec grep -l "${pattern}" {} +

【讨论】:

    【解决方案2】:

    使用查找命令。在当前文件夹中搜索

    find . -exec grep "$pattern" {} \; -print'
    

    在特定文件夹中搜索

    find /home/hduser  -exec grep "$pattern" {} \; -print'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2013-05-30
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多