如何使用正则表达式使用bash重命名大量文件?

时间:2013-03-02 14:46:39

标签: bash

我想用bash脚本重命名很多文件:

原件:

Kassai_szemle_1885_00015.jpg 
Kassai_szemle_1885_00016.jpg 
Kassai_szemle_1885_00017.jpg 

它应该重命名为:

Kassai_Szemle_1885_00015.jpg 
Kassai_Szemle_1885_00016.jpg 
Kassai_Szemle_1885_00017.jpg 

只应将“s”重命名为大写“S”。

我怎么能用bash做到这一点?

2 个答案:

答案 0 :(得分:6)

使用替代扩展

你真的不需要这里的正则表达式,尽管你可以使用非标准rename命令或使用sed,awk或perl解析文件名。但是,您也可以使用Bash的内置parameter expansion轻松处理此问题。例如:

for file in *_szemle_*
do
    mv "$file" "${file/_szemle/_Szemle}"
done

答案 1 :(得分:6)

在GNU / Linux下有一个rename实用程序(如Ubuntu,Debian,RedHat ......标准perl正常安装),这很容易。

您可以在包含所有这些文件的文件夹中运行它,例如:

rename 's/^Kassai_s/Kassai_S/' Kassai_s*.jpg