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

Regex 批处理列表中两列的文件名文件,regex,bash,perl,awk,sed,Regex,Bash,Perl,Awk,Sed,我有大约1000多个不同文件扩展名的文件。我还有一个以制表符分隔的文本文件,在并排列中包含旧名称和新文件名。例如: old new file1 entirely_new_name_for_file_1 file2 entirely_new_name_for_file_2 file3 entirely_new_name_for_file_3 如何使用shell脚本批量重命名所有这些文件 如果文件中已经有它们,则运行如下循环: while read old new;

我有大约1000多个不同文件扩展名的文件。我还有一个以制表符分隔的文本文件,在并排列中包含旧名称和新文件名。例如:

old       new
file1    entirely_new_name_for_file_1
file2    entirely_new_name_for_file_2
file3    entirely_new_name_for_file_3

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

如果文件中已经有它们,则运行如下循环:

while read old new; do
    mv "$old" "$new"
done < "file"
读新旧时;做
mv“$old”“$new”
完成<“文件”

如果文件中已经有它们,则运行如下循环:

while read old new; do
    mv "$old" "$new"
done < "file"
读新旧时;做
mv“$old”“$new”
完成<“文件”

您也可以使用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
读新旧时;做
mv$旧$新

完成您也可以使用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
读新旧时;做
mv$旧$新

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

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

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

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

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

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

完成。工作完美。我自己花了两个小时才让它工作。但我认为这是值得的:0并且完成了。工作完美。我自己花了两个小时才让它工作。但我认为这是值得的:0