如何遍历目录中的所有文件,并使用shell脚本查找这些文件中是否存在值

时间:2013-10-07 14:03:27

标签: bash shell unix

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

xyx.txt
agfh.txt
hjul.txt

我需要浏览所有这些文件,并查找每个文件中包含BPR等文本的条目数。

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

3 个答案:

答案 0 :(得分:6)

你不需要循环,这样的东西应该成功:

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

尝试一下:

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

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

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