特定の文字列を含んだファイルを格納したディレクトリをユニークに抽出するシェルスクリプト
found_dirs=()
for filepath in `find foobar -follow -type f`
do
result=`grep ${filepath} -e hogehoge -l`
if [ ${#result} -gt 0 ] && [ -f ${result} ]; then
found_dirs+=(`dirname ${result}`)
fi
done
echo "${found_dirs[@]}" | tr ' ' '\n' | sort -u
メモ
- 配列に次々と追加していき最後にソート&ユニークをかける方法がカンタン
- trコマンドは文字列の一括置換
- ${#str}で文字列長を取得
- 日本語キーボードでバッククオート(`)を打つには shift+@