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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取某些扩展名的文件列表,并将修改后的输出写入文件相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

%P在哪里

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

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

另一答案

附加GNU sed:

| sed 's/.*/Text file &/' >file-list.txt

以上是关于获取某些扩展名的文件列表,并将修改后的输出写入文件的主要内容,如果未能解决你的问题,请参考以下文章

C ++递归搜索具有某些扩展名的文件

获取Symfony命令的输出并将其保存到文件中

将标准输出从 subprocess.Popen 保存到文件,并将更多内容写入文件

在修改后的文档上触发电子邮件 Firebase 扩展

精细控制 GCC 的输出

当列表包含某些内容时,为啥使用 zip() 只写入 CSV 文件?