使用具有目录列表的文件执行 find 命令

使用具有目录列表的文件执行 find 命令

我有一个大文件,其中包含如下目录路径:

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

我想逐行读取该文件,并在输出文件的一行中列出每个目录文件内的所有文件。

输出文件应如下所示:

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

我可以使用指定目录路径的 find 命令,但如何将它与具有目录路径的文件一起使用? find input_file -type f不起作用。

任何人都可以建议一种如何列出目录内文件的方法,目录路径位于作为输入给出的文件中。

答案1

GNUfind可以使用该选项从文件中迭代读取起点,该选项指定包含- 分隔路径集-files0-from的文件。NUL处理仅有的对于那些指定的目录而不是其子目录,您也可以使用-maxdepth 0.该选项在 GNU 4.9.0 (2022-02-22) 或更高版本-files0-from中可用。find

在您的情况下,您需要将tr换行符分隔的文件列表转换为NUL- 分隔的文件列表,然后find将该列表读取为要扫描的输入目录集。例如,

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

相关内容