web-dev-qa-db-ja.com

特定の文字で始まるディレクトリを検索するにはどうすればよいですか?

Linuxのfindコマンドを使用して、特定の文字で始まるディレクトリを検索するにはどうすればよいですか。

たとえば、文字aで始まるすべてのディレクトリで、bで始まるファイルまたはディレクトリを検索したいとします。

9
bing

検索で検索を試してください:

見つける。 -type d -name "a *" -exec find {} -name "b" \;

現在のディレクトリから開始します(.)、findは、文字で始まるすべてのディレクトリを再帰的に検索します。見つかったディレクトリごとに、その中をbという名前のファイルを探します。

aで始まるフォルダのみを検索し、それらのa *フォルダにディレクトリを検索しない場合は、maxdepthを使用します。

見つける。 -type d -name "a *" -exec find {} -maxdepth 1 -name "b" \;

エラーを取り除くには:

見つける。 -type d -name "a *" 2>/dev/null -exec find {} -maxdepth 1 -name "b" \;
12
John T

find -regex ...を使用することもできます。

find -regex .*/a.*/b
1
user23307

この質問にたどり着くかもしれない人々のためのただの簡単な更新。

提供された解決策 John T に加えて、Pruneスイッチを使用してディレクトリを除外できることもわかりました(私が推測するより早くmanページを読んだ、hehe。)

したがって、たとえば、「a」で始まるディレクトリを除くすべてのディレクトリでファイルまたはディレクトリ「b」を検索する場合は、これを実行できます。

find . -path 'a*' -Prune -o -name "b" -print

ビンビン

1
bing