2015-06-26 53 views
0

如果我有50個不同的文件要重命名(或任何東西,基本上兩個參數)。我將如何使用for循環或任何其他方法來做到這一點?循環;傳遞兩個參數 - 1:1映射

mv $1 $2 

我不想傳遞每個實例的參數。 $1 = ab$2 = 1。 50個不同的文件名。

+0

你在哪兒使用oldName,NEWNAME每個文件的答案嗎?在一個文件? – Zac

+0

我以重命名爲例。我想知道如何完成1:1映射 – san1512

+0

我得到了答案 – san1512

回答

0

假設你有filenames.txt這樣的:

oldname1 newname1 
oldname2 newname2 

,你可以這樣做:

xargs -L1 mv <filenames.txt 
+1

該文檔說:> -l選項已被棄用,因爲POSIX標準指定-L。 – choroba

+0

@choroba:謝謝更正 – Zac

1

說當你有在當前目錄下的txt文件的列表要重命名:

for f in *.txt; do mv "$f" "renamed_$f"; done 

我建議在添加echo之後,看看命令是如何實現的首先執行,然後刪除回顯,如果它看起來不錯。

對於常見的文件重命名任務,您可能還需要考慮使用mmv,它允許您更輕鬆地進行基於模式的文件重命名。

+0

是的,如果名稱包含空格或由shell解釋的任何有趣的字符,建議添加引號。謝謝,湯姆。 – EdvardM

0

我想我有使用數組

OLD=(file text filename textfile) 
NEW=(files1 text3 filename2 textfile3) 
for i in {0..3}; do mv ${OLD[$i]} ${NEW[$i]};done