【问题标题】:Get all occurrences of a string within a directory(including subdirectories) in .gz file using bash?使用bash获取.gz文件中目录(包括子目录)中所有出现的字符串?
【发布时间】:2017-10-10 08:41:03
【问题描述】:

我想在具有以下子目录的目录中找到所有出现的“getId”:

*/*/*/*/*/*/myfile.gz

我试过thisfind -name *myfile.gz -print0 | xargs -0 zgrep -i "getId" 但它没有用。谁能告诉我获得这个的最好和最简单的方法?

【问题讨论】:

  • 您遇到了什么错误?并且您还需要添加目录。尝试:: 找到。 -name "myFile.gz" -type f -exec zgrep -i getSorById {} \;在某些情况下,您可能必须使用 gzgrep
  • 如果您只想打印具有该关键字的文件,请使用 grep -il 。如果这是你需要的,你可以使用 grep -ril "keyword" *
  • @abhishekphukan 尽管没有抛出任何错误,但它没有给出预期的结果。
  • 你能分享一下预期的输出吗

标签: bash shell find zgrep


【解决方案1】:
find ./ -name '*gz' -exec zgrep -aiH 'getSorById' {} \;

find 允许您使用“-exe”对文件执行命令,并将“{}”替换为文件名,用“\;”终止命令

我在 zgrep 中添加了“-H”,因此它也会在匹配时打印出文件路径,这很有帮助。 "-a" 将二进制文件视为文本(因为您可能会得到 tar-ed gzipped 文件)

最后,最好引用你的字符串,以防 bash 开始使用它们。

https://linux.die.net/man/1/grep https://linux.die.net/man/1/find

【讨论】:

    【解决方案2】:

    使用以下查找方法:

    find . -name *myfile.gz -exec zgrep -ai 'getSORByID' {} \;
    

    这将打印所有可能包含getSORByID 子字符串的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 2016-01-17
      • 1970-01-01
      • 2021-10-30
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      相关资源
      最近更新 更多