簡體   English   中英

Bash根據另一個文件中的行重命名多個文件

[英]Bash rename multiple files according to line in another file

我想根據另一個文件中指定的名稱來重命名多個文件。 例如,我有一個名為names.txt的文件,其中包含:

Name1 Newname1
Name2 Newname2
Name3 Newname3

等等

在這個names.txt文件中,名稱沒有編號。 但是,第1列和第2列中的名稱鏈接在一起。 我可以想象,應該可以遍歷文件以提取兩個名稱,並以某種方式在mv函數中使用它。 謝謝!

假設names.txt中的名稱names.txt包含空格,則可以使用以下命令:

while read a b; do mv "$a" "$b"; done < names.txt

即使您有空間也可以使用:

SAVE_IFS=$IFS
IFS=$(echo -en "\n\b")
for row in `cat names.txt`
do
    echo $row
    cur_name=`echo $row | awk -F " " '{print $1}'`
    new_name=`echo $row | awk -F " " '{print $2}'`
    echo "mv $cur_name $new_name"
done
IFS=$SAVE_IFS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM