答案1
您可以将该rename
实用程序与适当的正则表达式一起使用。
假设变换为:
nondigits digits underscore nondots dot anything
into
nondots atsign digits nondigits dot anything
命令是:
$ prename -n 's/([^\d]*)(\d*)_([^.]*)\.(.*)$/$3\@$2$1.$4/' *
最后一个*
扩展它以应用于与该 glob 匹配的所有文件,并且开关-n
使其仅模拟重命名操作,以便您可以验证它是否执行您想要的操作。
答案2
如果您有prename
命令(perl
脚本),Debian 中的软件包附带perl
,您可以执行以下操作:
prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png
例子 :
$ ls -1
x1_filename.png
x2_filename.png
x3_filename.png
x4_filename.png
$ prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png
x1_filename.png renamed as [email protected]
x2_filename.png renamed as [email protected]
x3_filename.png renamed as [email protected]
x4_filename.png renamed as [email protected]
prename -n
是--dry-run
,如果您对所做的更改感到满意,请直接运行它:
prename 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png