在我的应用程序的config文件夹中,我希望将所有*.yml.sample
个文件转换为*.yml
。有人可以帮忙吗?我想用终端完成这个。有没有一个命令来做这些事情?
答案 0 :(得分:3)
使用简单的shell循环和basename
命令去除第二个扩展名。
for f in *.yml.sample; do
mv $f `basename $f .sample`
done
答案 1 :(得分:2)
mmv
这是一个简单的事情。
$ mmv "*.yaml.sample" "#1.yaml"
这里的引用很重要。
答案 2 :(得分:2)
单向,使用sed
:
ls -1 *.yml.sample | sed "s%\(.*\).yml.sample%mv & \1.yml%" | sh
或更简单:
ls -1 *.yml.sample | sed "s%\(.*\).sample%mv & \1%" | sh
修改强>
ls
很方便,但解析它可能会失败,包括空格,换行符等。在这种情况下,循环和bash字符串替换最好:
for i in *.yml.sample; do mv "$i" "${i%.sample}"; done
为您阅读一些内容:
Rename multiple files with Linux
Why you shouldn't parse the output of ls
HTH
答案 3 :(得分:1)
find . -iname "*.png" -exec bash -c 'mv "$0" "${0%\.png}@2x.png"' {} \;
我用它将当前文件夹中的所有文件从“.png”重命名为“@ 2x.png”。这对于给视网膜图像命名太有用了。广泛用于ios开发人员。