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
中的 none 个名称包含空格,您可以使用:
while read a b; do mv "$a" "$b"; done < names.txt
即使你有 space :
SAVE_IFS=$IFS
IFS=$(echo -en "\n\b")
for row in `cat names.txt`
do
echo $row
cur_name=`echo $row | awk -F " " '{print }'`
new_name=`echo $row | awk -F " " '{print }'`
echo "mv $cur_name $new_name"
done
IFS=$SAVE_IFS
我想根据另一个文件中指定的名称重命名多个文件。 例如,我有一个名为 names.txt 的文件,其中包含:
Name1 Newname1
Name2 Newname2
Name3 Newname3
等等
在此 names.txt 文件中,名称未编号。但是,第 1 列和第 2 列中的名称链接在一起。 我可以想象它应该可以遍历文件以提取两个名称并以某种方式在 mv 函数中使用它。 谢谢!
假设 names.txt
中的 none 个名称包含空格,您可以使用:
while read a b; do mv "$a" "$b"; done < names.txt
即使你有 space :
SAVE_IFS=$IFS
IFS=$(echo -en "\n\b")
for row in `cat names.txt`
do
echo $row
cur_name=`echo $row | awk -F " " '{print }'`
new_name=`echo $row | awk -F " " '{print }'`
echo "mv $cur_name $new_name"
done
IFS=$SAVE_IFS