如何在Linux中将所有.yml.sample文件复制并重命名为.yml?

时间:2014-06-12 16:10:20

标签: linux bash

bash我想复制Git存储库中的所有.yml.sample文件(递归)并将它们重命名为只有.yml extension

EG。 test.yml.sample将被复制到test.yml

这里和我一样接近,但我不清楚如何在复制时将.sample从文件名末尾删除。

find . -depth -name "*.yml.sample" -exec sh -c 'cp "$1" "${1%/.sample/}"' _ {} \;

2 个答案:

答案 0 :(得分:2)

这应该有效:

find . -depth -name "*.yml.sample" -exec sh -c 'cp -p "$1" "${1%.yml.sample}.yml"' _ {} \;

第一个*.yml.sample通过find查找文件。然后在-exec部分之后,魔术通过cp通过find获取$1的结果,然后通过{{1}设置复制文件的文件扩展名其中${1%.yml.sample}.yml是源扩展名,.yml.sample是新的目标扩展名。

注意我还添加了.yml属性以保留源文件到复制文件的属性。您可能不需要这样,但我认为在执行此类复制时可能会有所帮助。

答案 1 :(得分:-1)

我认为你可以使用像mmv这样的工具来批量重命名你需要的所有文件。

mmv \*.yml.sample \#1.yml

以上一行应该有效...只需确保先测试一下。希望这有帮助!


编辑:如果您想要复制并重命名,只需一步即可使用-c标志。这将保留原始文件,并使用重命名掩码进行复制。

mmv -c \*.yml.sample \#1.yml