列表中两列的批处理文件名文件

时间:2014-02-09 09:44:30

标签: perl bash shell sed awk

我有大约1000个各种文件扩展名的文件。我还有一个制表符分隔的文本文件,其中包含oldname和新文件名并排列。例如:

old       new
file1    entirely_new_name_for_file_1
file2    entirely_new_name_for_file_2
file3    entirely_new_name_for_file_3

如何使用shell脚本批量重命名所有这些文件?

3 个答案:

答案 0 :(得分:4)

如果你已经将它们放在文件中,那么运行这样的循环:

while read old new; do
    mv "$old" "$new"
done < "file"

答案 1 :(得分:1)

您也可以使用HEREDOC:

while read old new; do
    mv $old $new
done <<___HERE
    file1    entirely_new_name_for_file_1
    file2    entirely_new_name_for_file_2
    file3    entirely_new_name_for_file_3
___HERE

答案 2 :(得分:0)

这是另一种方法。我不会自己使用它,感觉很危险:

sed 's/^/mv /' filename | sh

如果第一行实际上是标题,那么sed '1d;s/^/mv /'