ディレクトリリストを含むファイルを使用してfindコマンドを実行する

ディレクトリリストを含むファイルを使用してfindコマンドを実行する

次のディレクトリパスを含む大きなファイルがあります。

$PRJ/fp/t/mxl/lf/
$PRJ/fp/t/mxl/lf/

ファイルを1行ずつ読み、出力ファイルの1行に各ディレクトリファイル内のすべてのファイルを一覧表示したいと思います。

出力ファイルは次のようにする必要があります。

$PRJ/fp/t/mxl/lf/ring.lf
$PRJ/fp/t/mxl/lf/rin.lef

ディレクトリパスを指定するfindコマンドを使用できますが、ディレクトリパスを含むファイルにはどのように使用しますか? find input_file -type f動作しません。

誰もが入力として提供されたファイルのディレクトリパスを使用してディレクトリ内のファイルを一覧表示する方法を提案できますか?

ベストアンサー1

GNUは、find--separatedパスセットを含むファイルを指定するこのオプションを使用して、ファイルから開始点を繰り返し読み取ることができます-files0-fromNUL扱うただサブディレクトリではなくディレクトリを指定する場合は、を使用することもできます-maxdepth 0。このオプションはGNU 4.9.0(2022-02-22)以降で利用可能です-files0-fromfind

あなたの場合は、tr改行で区切られたファイルのリストをNUL--delimitedファイルのリストに変換し、そのfindリストを検索する入力ディレクトリのセットに読み込む必要があります。例えば、

tr '\n' '\0' <input_file | find -maxdepth 0 -files0-from - -type d -print

おすすめ記事