重命名多个文件 – linux / ubuntu

我需要从我的目录中的图像文件中删除“_1331045422”。

例如,我的图像文件名称如下所示: message-16-error_1331045422.png

我实际上运行了一个脚本来重命名所有图像文件。 另外我还有其他的文件(正确名称的图像文件,js文件和css等有正确的名称)

请帮助我一个命令,以“_1331045422”重命名所有图像文件,而不会影响其他人。

编辑:我不仅有.png文件的文件名错误。 还有gif和jpeg。

您可以使用重命名命令:

rename 's/_\d+(\..{1,3})/$1/g' *

如果您的文件扩展名超过三个字符,您可以在{}之间更改范围。

请注意,在某些系统上,重命名命令有点不一样。 看看这里: https : //superuser.com/questions/70217/is-there-a-linux-command-like-mv-but-with-regex

在尝试这个之前先备份你的文件!

 #!/bin/bash for i in *.png; do mv $i `echo $i | sed "s/_[0-9]\+\.png^/\.png/"` done 
 #!/usr/bin/python # message-16-error_1331045422.png --> message-16-error.png # Usage: python foo.py dir_to_change import os, sys dir=sys.argv[1] for file in os.listdir(dir): if not file.endswith('.png'): continue new, end = file.rsplit('_', 1) new=u'%s.png' % new file_old=os.path.join(dir, file) file_new=os.path.join(dir, new) os.rename(file_old, file_new) 

随着rnm :

 rnm -rs '/_\d+(\.)(png|gif|jpg|jpeg)/\1\2/' * 

更多例子在这里 。