重命名bash中具有2个列表的文件

时间:2018-09-15 18:37:19

标签: bash sh rename mv

我有2个文本文件,需要重新命名包含所有文件列表的old.txt文件和具有新名称的new.txt文件。 例如old.txt

23654.jpg
hello world.doc
ok, it's done.docx

new.txt

2018.jpg
old.doc
...

我想逐行读取这些文件,并在命令mv的参数中使用它们。我可以用一个文件(while read line)来做,但是我不知道如何管理第二个文件...

最后,我想使用2个文件作为另一个bash命令的参数来源。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以将另一个read不同 FD一起使用:

while IFS= read -r old_name && IFS= read -r new_name <&3; do
    mv -- "$old_name" "$new_name"
done <old.txt 3<new.txt

或使用paste和GNU xargs(用于-d选项):

paste -d'\n' {old,new}.txt | xargs -d'\n' -n2 mv --