Bash:使用前缀作为后缀重命名文件

Bash:使用前缀作为后缀重命名文件

我正在尝试做一些相当简单的事情,但对如何实现这一点有点不熟悉。

我有一组名为:的文件x2_filename.png,希望将文件转换为以下格式:[email protected]

谢谢!

答案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

相关内容