在Mac(OS X)上,我有一个包含许多图像的目录:
IMG_250x333_1.jpg
IMG_250x333_2.jpg
IMG_250x333_3.jpg
...
我需要将所有这些重命名为:
IMG_1.jpg
IMG_2.jpg
IMG_3.jpg
...
我认为使用带有“mv”的UNIX命令行和一种正则表达式可以完成这项工作,但我不知道怎么做!有人可以帮忙吗?
谢谢!
答案 0 :(得分:2)
如果有IMG_111x333_1.jpg以及IMG_444x222_1.jpg会怎样?你冒着破坏/覆盖的风险......
但如果这就是你想要的,你可以这样做:
#!/bin/bash
for f in *.jpg; do
new=${f/_*_/_}
echo mv "$f" $new
done
如果您喜欢它正在做的事情,请删除echo
一词。
答案 1 :(得分:0)
这是我喜欢的方法:
ls | sed 's/\(.*\)250x333_\(.*\)/mv "&" "\1\2"/' | sh
ls
列出文件。sed
转换文件名,并生成mv
命令。请注意,&
命令中的sed
输出完整的输入字符串。mv
sh
命令
这种方法的好处是你可以删除| sh
并测试你的正则表达式是否正确。