使用终端更改文件夹中的文件名

时间:2012-06-19 10:16:12

标签: shell unix

在我的应用程序的config文件夹中,我希望将所有*.yml.sample个文件转换为*.yml。有人可以帮忙吗?我想用终端完成这个。有没有一个命令来做这些事情?

4 个答案:

答案 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开发人员。