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

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

我有一个以制表符分隔的列表,其中包含数百个名称,格式如下

old_name    new_name
apple       orange
yellow      blue

我的所有文件都有唯一的名称,并以 *.txt 扩展名结尾,并且它们位于同一目录中。我想编写一个脚本,通过读取我的列表来重命名文件。因此,apple.txt 应该重命名为 orange.txt。我搜索了一番,但找不到快速的方法来做到这一点。我可以使用“重命名”或使用 perl“perl -p -i -e 's///g' *.txt”一次更改一个文件,并使用 sed 更改几个文件,但我不知道如何使用我的列表作为输入并编写一个 shell 脚本来对目录中的所有文件进行更改。我不想在 shell 脚本中为所有文件编写数百个重命名命令。任何建议都将非常受欢迎!

答案1

这应该可以工作,因为它是相当标准的 bash

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

    done <input.file

相关内容