我知道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
答案 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 cat
和grep -c string
:
find /etc/ -maxdepth 1 -type f -exec cat {} + | grep -c conf
139
因此我/ etc上有139个字符串'conf'。
请注意,我不想以递归方式运行,否则我会删除-maxdepth 1