我需要从目录中的图像文件中删除“_1331045422”。
例如,我的图片文件名如下: message-16-error_1331045422.png
我实际上运行了一个脚本,以这种方式重命名所有图像文件。 我还有其他文件(具有正确名称的图像文件,具有正确名称的js文件和css等)
请帮我一个命令,用“_1331045422”重命名所有图像文件,而不影响其他人。
编辑: 我不仅有.png文件,文件名错误。还有GIF和jpegs。
答案 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)