【发布时间】:2026-02-07 19:40:01
【问题描述】:
就像标题一样简单。我有嵌套文件,如果它们以 .toml 结尾,我想对它们执行命令。
尝试
find . -type f -exec sed -i '3i value = 1' {} \;
运行每个文件,但有没有办法只对以 .toml 结尾的文件执行它?
【问题讨论】:
就像标题一样简单。我有嵌套文件,如果它们以 .toml 结尾,我想对它们执行命令。
尝试
find . -type f -exec sed -i '3i value = 1' {} \;
运行每个文件,但有没有办法只对以 .toml 结尾的文件执行它?
【问题讨论】:
确实有;使用-name 开关:
find . -name '*.toml' -type f -exec sed -i '3i value = 1' {} \;
这匹配任何以.toml 结尾的文件。小心包含引号以防止 * 被 shell 扩展 - 您希望它按原样传递给 find。
顺便说一句,您可以改用-exec {} + 来加快脚本的执行速度:
find . -name '*.toml' -type f -exec sed -i '3i value = 1' {} +
这会将多个结果传递给sed 的同一个实例,而不是为每个结果生成一个单独的实例。
【讨论】:
find . -type f -name '*.toml' -exec sed -i '3i value = 1' {} \;
【讨论】: