![使用唯一名称重命名多个文件](https://linux22.com/image/598232/%E4%BD%BF%E7%94%A8%E5%94%AF%E4%B8%80%E5%90%8D%E7%A7%B0%E9%87%8D%E5%91%BD%E5%90%8D%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6.png)
我有一个以制表符分隔的列表,其中包含数百个名称,格式如下
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