2012-06-11 52 views
1

我需要從我的目錄中的圖像文件中刪除「_1331045422」。 。重命名多個文件 - linux/ubuntu

用於例如,我的圖像文件名看起來像:消息16 error_1331045422.png

我居然跑其重命名所有圖像文件這樣的腳本。 另外我還有其他文件(正確名稱的圖像文件,js文件和css等有正確的名稱)

請幫我一個命令,以「_1331045422」重命名所有圖像文件,而不會影響其他人。

編輯: 我不僅有.png文件錯誤的文件名。還有gif和jpegs。

回答

3

您可以使用重命名命令:

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

您可以更改之間{}如果您有擴展名的文件超過三個字符長的範圍內。

請注意,在某些系統上,rename命令有點不同。 看一看這裏: https://superuser.com/questions/70217/is-there-a-linux-command-like-mv-but-with-regex

+0

超酷。如果這適用於子目錄內的文件,那將會很棒 –

+0

沒有用於重命名的遞歸選項。你需要一個bash腳本才能更進一步。但我同意,重新命名它很棒。很遺憾,在某些系統上,比如slackware,有「錯誤」的版本。 – Zagorax

+0

謝謝@Zagorax :) –

0

在嘗試此操作之前先備份您的文件!

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

我在問題的末尾添加了一個信息。請參見。 –

0

隨着rnm

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

更多的例子here