首页 > 解决方案 > 获取某些扩展名的文件名列表并将修改后的输出写入文件

问题描述

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

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应该能够达到这个结果,但我无法自己解决。

标签: linuxbashfind

解决方案


使用 GNU find,您可以使用该-printf操作来格式化您的输出:

find . -mindepth 2 -type f -name '*.txt' -printf 'Text file %P\n'

%P在哪里

文件的名称以及在其下发现它的起点的名称已被删除。

(相对于%p,这将保持领先./)。要将输出保存到文件中,> file-list.txt请在命令后附加重定向。


推荐阅读