linux - 获取某些扩展名的文件名列表并将修改后的输出写入文件
问题描述
我可以使用以下命令在我的目录(不包括顶级)中搜索具有特定扩展名的所有文件:
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\n'
%P
在哪里
文件的名称以及在其下发现它的起点的名称已被删除。
(相对于%p
,这将保持领先./
)。要将输出保存到文件中,> file-list.txt
请在命令后附加重定向。
推荐阅读
- r - 错误:`data` 必须是一个数据框,或其他可被`fortify()` 强制的对象,而不是具有类 reactiveExpr/reactive 的 S3 对象
- lua - Lua 尝试调用索引全局 nil 值错误
- node.js - socket.io 无法连接 react-native 和 nodejs
- ocaml - 在 ocaml 中遇到矩阵问题
- typescript - 根据字段映射联合类型
- javascript - 如何从 rxjs observable 返回一个数组?
- python - 如何获取子目录列表?
- docker - 带有 asp.net 核心和 docker 的 ERR_EMPTY_RESPONSE
- java - 格式不正确的 Java 日期处理
- javascript - 在Angular 8中将两个基于不同键的对象数组合并为一个