ファイルがリストされているディレクトリにファイルを見つける方法は?

ファイルがリストされているディレクトリにファイルを見つける方法は?

ディレクトリには複数のサブディレクトリがあります。たとえば、次のようになります。

TopLevelDir
+-- SubDir1
+-- SubDir2
+-- SubDir3
+-- SubDir4
+-- SubDir5
+-- SubDir6

これらのサブディレクトリの特定のサブセットで特定のテキストを含むファイルを見つける必要があります。必要なものは次のことで達成できます。

find SubDir1 SubDir2 SubDir4 -type f -exec grep -H "desired text" {} \;

同様の検索が必要な場合がよくあります。時間と入力時間を節約するために、検索するサブディレクトリの名前をファイルに保存し、次にfindコマンドを実行するときに次のように使用したいと思います。

find subdirs2search.txt -type f  -name="*.txt" -exec grep -H "desired text" {} \;

ウェブを検索し、マンページをチェックして、私の*nixの本をチェックしても、これを行う方法についての情報はまったくありませんでした。

可能ですか?では、どうすればよいですか?

ベストアンサー1

ディレクトリ名が1行に1つずつある場合はreadarray(bash v4 +)、名前にスペース、タブ、またはワイルドカードを含むディレクトリの問題を回避できます。

readarray -t dirs < subdirs2search.txt
find "${dirs[@]}" ...

一部のディレクトリ名がで始まる場合はまだ役に立ちませんが、-GNUではfindこの問題を解決する方法はありません。

おすすめ記事