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

Sta*_*erd 1 bash

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

原版的:

Kassai_szemle_1885_00015.jpg 
Kassai_szemle_1885_00016.jpg 
Kassai_szemle_1885_00017.jpg 
Run Code Online (Sandbox Code Playgroud)

它应该重命名为:

Kassai_Szemle_1885_00015.jpg 
Kassai_Szemle_1885_00016.jpg 
Kassai_Szemle_1885_00017.jpg 
Run Code Online (Sandbox Code Playgroud)

只应将"s"重命名为大写"S".

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

Tod*_*obs 6

使用替代扩展

你并不真的需要一个正则表达式在这里,虽然你可以使用一个与非标准rename命令或通过使用sed,awk的或Perl解析文件名.但是,您也可以使用Bash的内置参数扩展来轻松处理.例如:

for file in *_szemle_*
do
    mv "$file" "${file/_szemle/_Szemle}"
done
Run Code Online (Sandbox Code Playgroud)


n3r*_*rV3 6

rename在GNU/Linux下有一个实用程序(像Ubuntu,Debian,RedHat ......虽然标准perl是正常安装的),这使得它很容易.

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

rename 's/^Kassai_s/Kassai_S/' Kassai_s*.jpg
Run Code Online (Sandbox Code Playgroud)