2013-05-08 185 views
2

重命名多個文件......在外殼重命名多個文件

我有一個目錄使用

abc.tar.gz 
abc2.tar.gz 
abc3.tar.gz 

此命令3個文件:

它把它們轉換成

abc.part.tar.gz 
abc.part2.tar.gz 
abc.part3.tar.gz 

之後我加入在這3個文件..

abc.tar.gz 
abc2.tar.gz 
abc3.tar.gz 

,當我火重命名ABC abc.part ABC與* .tar.gz

所以最終輸出是

abc.part.tar.gz 
abc.part.part2.tar.gz 
abc.part.part3.tar.gz 
abc.part.part.tar.gz 
abc.part2.tar.gz 
abc.part3.tar.gz 
將重命名所有的6個文件

我只是想防止多個重命名...我的rename命令應該怎麼樣?

表示我的最終輸出應該低於,無論我多少時間點火命令。 這裏的文件數量是DYNAMIC ..它可能是3,4 ...或其他...所以不能靜態添加3或某些數字!

abc.part.tar.gz 
abc.part2.tar.gz 
abc.part3.tar.gz 
+0

這聽起來不像一個bash/sh的問題。 – svante 2013-05-08 14:00:52

+0

http://theunixshell.blogspot.com/2013/01/bulk-renaming-of-files-in-unix.html – Vijay 2013-05-13 07:28:09

回答

1

作爲最後一個參數來重命名,使用:

abc{,2,3}.tar.gz 
+0

和我想如果有更多的數字呢?你能告訴我一些動態嗎? – 2013-05-08 13:54:15

+0

您也可以使用'abc {,[23]} .tar.gz'或'abc {,[0-9]} {,[0-9]} .tar.gz' – 2013-05-08 20:30:42

0

創建以下 「ChangeExt」 腳本:

#!/bin/bash 
if [ $# -lt 2 ]; then 
    echo "$0 NEWEXT FILENAME.." 
    exit 1 
fi 

$newext=$1 
shift 

for a in $* 
do 
    mv $a "`basename $a`.$newext" 
    echo "$a to `basename $a`.$newext" 
done