在 bash 中重命名包含 2 个列表的文件
rename a file with 2 lists in bash
我有 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 命令的参数源。
有什么想法吗?
谢谢
您可以使用另一个 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 --
我有 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 命令的参数源。
有什么想法吗?
谢谢
您可以使用另一个 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 --