一致するキーワードを含むディレクトリのファイル数を取得しようとしています。私が使用するコードは次のとおりです。
grep -r -i --include=*.sas 'keyword'
- キーワードの総数を教えてくれます。
grep -l "keyword" --include="*.sas" * | wc -l
- このコードは機能しません。
誰もがキーワードを含むファイルの数を取得するのに役立ちますか?
ベストアンサー1
find
個人的に私は計算のためにandを一緒に使いますgrep
。
find . -type f -name '*.sas' -exec grep -q -e 'pattern' {} \; -exec echo x \; |
wc -l
サブディレクトリに再帰的に移動したくない場合は、-maxdepth 1
最初のディレクトリの前に追加してください。-exec
find
これは、現在のディレクトリまたは次のディレクトリにあるファイル名サフィックスを持つすべてのファイルで実行されますgrep -q -e 'pattern'
。.sas
一致するファイルごとにpattern
出力x
が発生しますecho x
。echo
その後、この方法で出力される行数を計算するために使用されますwc -l
。ファイル名に改行文字を含めることができるので、x
filenameの代わりにesを評価します。wc
非再帰バリアントの場合は、単純なシェルループを選択することもできます。
for name in ./*.sas; do
[ ! -f "$name" ] && continue
grep -q -e 'pattern' "$name" && echo x
done | wc -l
または、
n=0
for name in ./*.sas; do
[ ! -f "$name" ] && continue
grep -q -e 'pattern' "$name" && n=$((n + 1))
done
echo "$n"
pattern
正規表現ではなく文字列の場合は、代わりにそれを使用してくださいgrep -q -F -e 'string'
。