使用grep查找文件目录中找到的字符串总数

时间:2014-06-30 18:06:47

标签: string bash unix count grep

我知道grep -c 'string' dir会返回一个文件名列表以及该字符串出现在每个文件中的次数。

有没有办法简单地使用grep(或可能操纵此输出)获取整个文件目录中出现的字符串总数?谢谢。

BASH_DIR=$(awk -F "=" '/Bash Dir/ {print $2}' bash_input.txt)

FIND_COUNT=0

for f in "$BASH_DIR"/*.sh
do
    f=$(basename $f)

    #Read through job files
    echo -e "$f: $(cat * | grep -c './$f')"
done

3 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,其中一种方法是使用awk

grep -c 'string' dir | awk -F: '{ s+=$2 } END { print s }'

awk将从grep的输出中获取每个文件中出现的次数并打印总和。

答案 1 :(得分:0)

如果您只想查看以.sh结尾的文件,请使用

grep -c pattern *.sh

或者如果您希望将其存储在变量中,请使用

n=$(grep -c xyz *.sh)

答案 2 :(得分:0)

您可以将find-exec catgrep -c string

一起使用
find /etc/ -maxdepth 1 -type f  -exec cat {} + | grep -c conf
139

因此我/ etc上有139个字符串'conf'。

请注意,我不想以递归方式运行,否则我会删除-maxdepth 1