我有一个大文件,其中包含如下目录路径:
$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