我可以使用以下命令在目录(顶级除外)内搜索具有特定扩展名的所有文件:
find . -mindepth 2 -type f -name '*.txt'
返回:
folder1/text1.txt
folder1/text2.txt
...
我想将这些文件名写入输出文件,例如file-list.txt
并将内容更改为:
Text file folder1/text1.txt
Text file folder1/text2.txt
...
即将文件名串联成更长的字符串。如何使用bash
来做到这一点?经过搜索,我发现sed
应该可以达到这个结果,但是我无法自己完成工作。
答案 0 :(得分:3)
使用GNU find,您可以使用-printf
操作来格式化输出:
find . -mindepth 2 -type f -name '*.txt' -printf 'Text file %P\n'
%P
在哪里
文件的名称以及删除该文件的起点的名称。
(与%p
相对,它将保留前导./
)。要将输出保存到文件中,请在命令后附加重定向> file-list.txt
。
答案 1 :(得分:2)
附加GNU sed:
| sed 's/.*/Text file &/' >file-list.txt