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

问题描述 投票:0回答:2

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

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应该能够实现这一结果,但我无法自拔。

linux bash find
2个回答
3
投票

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

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

%P在哪里

文件名,包含发现它的起始点的名称。

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


2
投票

附加GNU sed:

| sed 's/.*/Text file &/' >file-list.txt
© www.soinside.com 2019 - 2024. All rights reserved.