【问题标题】:How to loop through all files in a directory and find if a value exists in those files using a shell script如何遍历目录中的所有文件并使用 shell 脚本查找这些文件中是否存在值
【发布时间】:2013-10-07 14:03:27
【问题描述】:

我有一个目录PAYMENT。在里面我有一些文本文件。

xyx.txt
agfh.txt
hjul.txt

我需要浏览所有这些文件,并找出每个文件中有多少条目包含像BPR 这样的文本。

如果是这样,我需要收到警报。例如,如果xyx.txt 只包含一个BPR 条目,我需要得到一个警报。

【问题讨论】:

标签: bash shell unix


【解决方案1】:

你不需要循环,这样应该可以:

grep -l "BPR" /your/path/PAYMENT/*
  • grep 是一种在文件中查找与模式匹配的行的工具。
  • -l 显示哪些文件具有该字符串。
  • "BPR" 是您要查找的字符串。
  • /your/path/PAYMENT/* 表示它将在该目录中的所有文件中使用grep

如果您想在特定类型的文件/目录中查找,请这样说,因为命令会有所不同。


更新

根据您的新要求:

我需要浏览所有这些文件,找出每个文件中有多少条目 像 BPR 这样的文件。

如果是这样,我需要收到警报。例如,如果 xyx.txt 包含 只有一个 BPR 条目,我需要收到警报。

grep -c 是你的朋友 (more or less)。所以你可以做的是:

if [ "$(grep -c a_certain_file)" -eq 1 ]; then
    echo "mai dei mai dei"
fi

【讨论】:

  • 您是否将/your/path 更改为您的真实路径?如果你在PAYMENT,你可以简单地做grep -l "BPR" *,例如。
  • 对不起兄弟,现在它正在工作。我已经改变了。但我犯了一个小错误:(。我很着急,我必须在 1 小时内完成。
  • 但这不是我需要的解决方案。抱歉我在问题中的错误解释
  • grep -c 将计算出现次数。对于i need to get an alert,请更具体。
【解决方案2】:

i need to go through all these files an find is there an entry like 'BPR'

如果您正在寻找查找包含BPR 的文件名的命令,请使用:

echo /path/to/PAYMENT/*BPR*.txt

如果您正在寻找一个命令来查找包含文本 BPR 的文件名,请使用:

grep -l "BPR" /path/to/PAYMENT/*.txt

【讨论】:

    【解决方案3】:

    试试看:

    grep -o BPR {path}/* | wc -l

    其中 {path} 是所有文件的位置。它只会为您提供字符串“BPR”的出现次数。

    另外,仅供参考 - 这也在这里讨论过:count all occurrences of string in lots of files with grep

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      相关资源
      最近更新 更多