我有一个包含数千个文件的文件夹:
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
在尝试此操作之前,首先确保您有备份。
幸运的是,您的示例在旧名称和新名称中没有空格,并且没有提及子目录(全部位于同一目录中),因此如果列表中的所有行看起来都是这样
- 与您的图像位于
rename_rules.txt
同一目录中 - cd 进入该目录
跑步:
eval "$(sed 's/^/mv /g' rename_rules.txt )"
- 其中每行
rename_rules.txt
仅包含对oldname newname
sed
用于将您转换rename_rules
为mv oldname newname
eval
然后用来执行它,因此文件被重命名
- 其中每行
免责声明:这个简单的简短脚本中根本没有内置任何验证或文件检查,这就是为什么我说要做的第一件事是确保您有备份,以防您的重命名对之一碰巧oldname newname
包含错误,然后您至少可以从备份开始