对具有特定扩展名的每个文件执行命令

时间:2016-04-18 13:19:43

标签: bash loops nested find

就像标题一样简单。我有嵌套文件,如果它们以.toml结尾,我想对它们执行命令。

尝试

find . -type f -exec sed -i '3i value = 1' {} \;

遍历每个文件,但有没有办法只对以.toml结尾的文件执行此操作?

2 个答案:

答案 0 :(得分:3)

确实有;使用-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的同一个实例,而不是为每个结果生成一个单独的结果。

答案 1 :(得分:1)

find . -type f -name '*.toml' -exec sed -i '3i value = 1' {} \;