複数のサブディレクトリとファイルを含むディレクトリがある場合は、正規表現に一致するファイル名(直接または間接)を含むそのディレクトリの直接サブディレクトリ名を一覧X
表示したいと思います。X
^rf.*\.img$
OS Xでこれを達成するには?
ベストアンサー1
GNUを使用すると、find
各ディレクトリをテストできます。
for i in "$dir"/*/
do
test -n "$(find "$i" -type f -regex '.*/test[^/]*' -print -quit)" \
&& echo "$i"
done
その後、各ディレクトリはファイルの先頭を検索し、test
見つかった場合はそのディレクトリを印刷します。
参考にするいくつかの点があります。
- ;で始まるサブディレクトリを無視します。これを考慮する必要がある場合は、Bash FAQを確認して
.
キャプチャせずに含める方法.
を学びます..
。 - 私達はゲームがあれば
find
早くやめた。-quit
これにより、大規模ファイルシステムツリーで時間が節約されます。 - テストは
-regex
考慮されているフルパス名と一致するため、基本find
名にのみ一致する場合は一致時に注意する必要があります/
。-filename
. -iregex
大文字と小文字を区別しない一致には、代替を使用できます-regex
。- optionsを使用して正規表現構文を選択できます
-regextype
。
質問の特定のパターンにワイルドカードを使用できるため、次のようになります。
for i in "$dir"/*/
do
test -n "$(find "$i" -type f -name 'rf*.img' -print -quit)" && echo "$i"
done