【问题标题】:rename a file with 2 lists in bash在 bash 中重命名包含 2 个列表的文件
【发布时间】:2019-02-20 04:44:37
【问题描述】:

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

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

新的.txt

2018.jpg
old.doc
...

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

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

有什么想法吗?

谢谢

【问题讨论】:

  • 另一个论坛给我答案:while read -r lineFic1 <&3; do read -r lineFic2 <&4; vm "$lineFic1" "$lineFic2"; done 3<fic1.txt 4<fic2.txt

标签: bash sh rename mv


【解决方案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 --

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 2015-09-05
    • 2013-03-01
    • 2020-02-18
    • 2011-01-25
    • 2013-07-08
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多