在我的应用程序的配置文件夹中,我希望将所有*.yml.sample
文件转换为*.yml
. 有人可以帮忙吗?我希望使用终端来完成。是否有一个命令可以执行此操作?
问问题
2231 次
4 回答
3
使用一个简单的 shell 循环和basename
命令来剥离第二个扩展。
for f in *.yml.sample; do
mv $f `basename $f .sample`
done
于 2012-06-19T10:18:16.843 回答
2
这很简单mmv
。
$ mmv "*.yaml.sample" "#1.yaml"
引号在这里很重要。
于 2012-06-19T13:18:15.060 回答
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
给你一些阅读:
用 Linux 重命名多个文件
为什么你不应该解析 ls 的输出
高温高压
于 2012-06-19T13:25:33.470 回答
1
find . -iname "*.png" -exec bash -c 'mv "$0" "${0%\.png}@2x.png"' {} \;
I have used this to rename all files in current folder from ".png" to "@2x.png". This is too useful for giving name to retina images. Widely used for ios developers.
于 2013-05-28T09:18:48.393 回答