用唯一名称重命名多个文件

我有以下格式的数百个名称的制表符分隔列表

old_name new_name apple orange yellow blue 

我的所有文件都有唯一的名称,并以* .txt扩展名结尾,并且位于同一个目录中。 我想写一个脚本,通过阅读我的列表来重命名文件。 所以apple.txt应该改名为orange.txt。 我已经四处搜寻,但我找不到一个快速的方法来做到这一点。我可以一次更改一个文件,用'重命名'或使用perl“perl -p -i -e's /// g'* .txt “和几个文件与sed,但我不知道如何可以使用我的列表作为input,并编写一个shell脚本进行更改目录中的所有文件。 我不想为shell脚本中的所有文件编写数百个重命名命令。 任何build议将是最受欢迎的!

这应该是相当标准的bash

 #!/bin/bash while read line do set -- $line echo renaming "$1.txt to $2".txt mv "$1".txt "$2.txt" done <input.file