1

在我的应用程序的配置文件夹中,我希望将所有*.yml.sample文件转换为*.yml. 有人可以帮忙吗?我希望使用终端来完成。是否有一个命令可以执行此操作?

4

4 回答 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 回答