我想根据另一个文件中指定的名称重命名多个文件。 例如,我有一个名为 names.txt 的文件,其中包含:
Name1 Newname1
Name2 Newname2
Name3 Newname3
等
在此 names.txt 文件中,名称未编号。但是,第1列和第2列中的名称链接在一起。 我可以成像它应该可以遍历文件以提取两个名称并以某种方式在 mv 功能中使用它。 谢谢!
答案 0 :(得分:2)
假设names.txt
中的所有名称都不包含空格,您可以使用:
while read a b; do mv "$a" "$b"; done < names.txt
答案 1 :(得分:0)
即使你有空格,这也会有效:
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