获取某些扩展名的文件名列表,并将修改后的输出写入文件

时间:2018-09-05 20:18:53

标签: linux bash find

我可以使用以下命令在目录(顶级除外)内搜索具有特定扩展名的所有文件:

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应该可以达到这个结果,但是我无法自己完成工作。

2 个答案:

答案 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