ファイルの内容内のサブディレクトリを再帰的に検索したいのですが、最初のレベルのサブディレクトリに一致するものがありますが、気にしています。つまり、次のように与えられます。
ParentDirectory
Subdirectory1
File containing match
File not containing match
File containing match
Subdirectory2
File not containing match
File not containing match
Subdirectory3
File not containing match
Subdirectory3.1
File containing match
私が知る必要があります:
Matches:
ParentDirectory/Subdirectory1
ParentDirectory/Subdirectory3
誰かがgrepまたは同様のユーティリティを使用してこれを行う方法を提供できますか?
答え1
各サブディレクトリでfind
再帰を実行するには、次の手順を実行します。grep
echo "Matches:"
find ParentDirectory -mindepth 1 -maxdepth 1 -type d \
-exec grep -rq pattern {} \; \
-and -print
-q
grep
最初の一致時に停止オプションは、項目が見つかっ
-and -print
た場合にのみ目次を印刷しますfind
。grep
-loopを使用するfor
代替:
echo "Matches:"
for d in ParentDirectory/* ; do
[ -d "$d" ] && grep -rq pattern "$d" && echo "$d"
done
両方のバージョンの出力:
Matches:
ParentDirectory/Subdirectory1
ParentDirectory/Subdirectory3