重命名多个文件--linux / ubuntu

时间:2012-06-11 09:32:58

标签: linux unix ubuntu directory rename

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

例如,我的图片文件名如下: message-16-error_1331045422.png

我实际上运行了一个脚本,以这种方式重命名所有图像文件。 我还有其他文件(具有正确名称的图像文件,具有正确名称的js文件和css等)

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

编辑: 我不仅有.png文件,文件名错误。还有GIF和jpegs。

4 个答案:

答案 0 :(得分:3)

您可以使用重命名命令:

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

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

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

答案 1 :(得分:0)

在尝试此操作之前备份文件!!

#!/bin/bash
for i in *.png; 
    do mv $i `echo $i | sed  "s/_[0-9]\+\.png^/\.png/"`
done

答案 2 :(得分:0)

#!/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)

答案 3 :(得分:0)

使用rnm

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

更多示例here