これは少し複雑ですが、find コマンドを使用してアイテム (ファイル、ディレクトリなど) を検索し、-exec パラメーターを介してそれらを含めるかどうかを決定するコマンドを実行したいのですが、 find が除外されたディレクトリに降りるのを防ぎます。
例えば:
find . -exec sh -c 'echo "{}" | grep -i ".*/[a][^/]*"' \;
少し奇妙な例ですが、基本的に上記は文字 a で始まる項目のみに一致するはずですが、実行すると、他の文字で始まるディレクトリと一致しなくても、 find はそれらに降りて結果を返しますそのディレクトリに文字 a で始まる項目が含まれている場合。たとえば、次のように一致します。
./aFolder/aFile
./Foo/Bar/aFile
./aFolder/Foo/Bar/aFile
私がしたいのは、ディレクトリが一致しない場合はその内容も無視されるように、これが起こらないようにすることです。最後の例では、./aFolder が一致しますが、./Foo が検出された場合は検索する必要があります。続行しないでください。
ディレクトリが除外されている場合に find がより深く降りないようにする方法、またはそのように制限できる同様のコマンドはありますか? 現在、カスタム シェル スクリプトを使用して自分で再帰を実行していますが、巨大なディレクトリ ツリーに対して最も効率的な方法ではありません。