2012-06-19 41 views
-2

我有一些文件,如file_022.bmp,file_023.bmp ... file_0680.bmp的。我需要重命名這些更方便的東西,如file_1.bmp,file_2.bmp ... file_658.bmp。重命名多個文件殼牌在Linux的

有沒有辦法,我可以寫爲我做這一個bash腳本?感謝您的幫助和建議。

盧克^ h

+1

你嘗試過什麼?你只需要知道如何做一些[字符串操作](http://mywiki.wooledge.org/BashFAQ/100) – ormaaj

+0

可能重複的[重命名BASH中的幾個文件](http://stackoverflow.com/questions/2416263/rename-several-files-in-the-bash) –

+0

你是說你想從「022」中減去21,並刪除前導零? –

回答

5

如果你是一個基於Debian的Linux系統,那麼你可以使用它接受regular expressions重命名文件重命名腳本。更多info,因爲我發現很難找到手冊頁。

例如

[email protected]_Gate:~$ ls p*.php 

parse.php pd.php pgrep.php preg_based.php proc.php 

假設我要改變擴展.perl與_文件 然後在前面加上名字我用命令:

rename -n 's/([a-z]*)\.php/file_$1.perl/' p*.php 

會給

parse.php renamed as file_parse.perl 
pd.php renamed as file_pd.perl 
pgrep.php renamed as file_pgrep.perl 
preg_based.php renamed as preg_file_based.perl 
proc.php renamed as file_proc.perl 

我選擇和捕捉基本文件名([a-z]*),然後在替代品$1中使用它,並追加.perl並在常規條件前加上1美元摹file_

-n選項使得試運行而無需改變任何東西

你可以從這個例子中你選擇正則表達式需要正確地想出來,或者你得到的情況等,其中你想上面的preg_based.php見file_preg_based.perl :) 來補償我會一直需要使用([a-z_]*)這裏

它的原因很多,我一直掛在Debian的一個,我很想找到其他非Debian相當於系統: -/

+0

你能告訴我一個例子嗎? –

+2

您可以查看本手冊。 http://manpages.ubuntu.com/manpages/dapper/man1/prename.1.html – txominpelu

+0

爲你增加了一個例子 –

4

如果你有文件a.bmp,b.bmp,c.bmp 你想file_1.bmp,file_2.bmp結束後,使用bash file_3.bmp

mkdir result 
index=1 
for i in *.bmp 
do 
    mv "$i" "result/file_"$((index++)).bmp 
done 

注意事項:使用子目錄 建議,以避免意外覆蓋,看起來像file_xx.bmp

,如果你有太多的文件,將在命令行擴張後,你可以使用類似文件:

mkdir result 
index=1 
find . -name "*.bmp" | while read i 
do 
    echo mv "$i" "result/file_"$((index++)).bmp 
done 

檢查輸出刪除後的「迴響」