1

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

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

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

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

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

4

4 回答 4

3

您可以使用重命名命令:

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

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

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

于 2012-06-11T10:05:22.107 回答
0

在尝试之前备份您的文件!!

#!/bin/bash
for i in *.png; 
    do mv $i `echo $i | sed  "s/_[0-9]\+\.png^/\.png/"`
done
于 2012-06-11T09:40:28.557 回答
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)
于 2012-06-11T09:42:10.800 回答
0

使用rnm

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

更多示例在这里

于 2016-05-07T08:18:48.840 回答