[英]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.