使用包含备用文件名的文本文件重命名文件的脚本

使用包含备用文件名的文本文件重命名文件的脚本

我有一个包含数千个文件的文件夹:

file1.jpeg
file2.jpeg
file3.jpeg

ETC。

我有一个文本文件,其中包含我想要替换的新文件名列表:

old_filename     new_filename
file3.jpeg       my_dog.jpeg
file1.jpeg       my_cat.jpeg
file2.jpeg       my_goat.jpeg

ETC。

我正在寻找一个脚本来使用新文件名重命名文件夹中的所有文件(或将新名称作为前缀附加到原始文件名)。

我想我需要一些东西来搜索文件夹,将名称与文本文件进行比较,然后相应地重命名文件。

列表和文件不以任何方式排序。

答案1

在尝试此操作之前,首先确保您有备份。

幸运的是,您的示例在旧名称和新名称中没有空格,并且没有提及子目录(全部位于同一目录中),因此如果列表中的所有行看起来都是这样

  1. 与您的图像位于rename_rules.txt同一目录中
  2. cd 进入该目录
  3. 跑步:

     eval "$(sed 's/^/mv /g' rename_rules.txt )"
    
    • 其中每行rename_rules.txt仅包含对oldname newname
    • sed用于将您转换rename_rulesmv oldname newname
    • eval然后用来执行它,因此文件被重命名

免责声明:这个简单的简短脚本中根本没有内置任何验证或文件检查,这就是为什么我说要做的第一件事是确保您有备份,以防您的重命名对之一碰巧oldname newname包含错误,然后您至少可以从备份开始

相关内容