在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/}"' _ {} \;
答案 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