如何依据含原文件名与新ID名的文本批量重命名文件
如何依据含原文件名与新ID名的文本批量重命名文件
嘿,这个需求其实挺常见的,我给你分享几个简单靠谱的命令行方法,不管是Linux/macOS还是Windows都能用:
方法一:Linux/macOS 用Bash脚本
假设你的映射文件名叫rename_map.txt,直接在终端里运行下面的脚本就行:
while read old_name new_name; do if [ -f "$old_name" ]; then mv "$old_name" "$new_name" echo "Renamed: $old_name -> $new_name" else echo "Warning: $old_name not found, skipped" fi done < rename_map.txt
这个脚本会逐行读取你的映射文件,把每行拆成旧文件名和新文件名:
- 先检查目标文件是否存在,避免对不存在的文件做无效操作
- 存在的话就用
mv命令完成重命名,同时输出提示信息告诉你操作结果 - 找不到的文件会给出警告,不会瞎折腾
方法二:Windows 用PowerShell脚本
如果你用的是Windows系统,可以打开PowerShell,切换到文件所在目录,运行这段脚本:
Get-Content .\rename_map.txt | ForEach-Object { $parts = $_ -split '\s+', 2 $oldName = $parts[0] $newName = $parts[1] if (Test-Path $oldName) { Rename-Item -Path $oldName -NewName $newName Write-Host "Renamed: $oldName -> $newName" } else { Write-Warning "$oldName not found, skipped" } }
逻辑和Bash版本差不多:逐行读取映射文件,拆分文件名,检查文件存在后执行重命名,同样会给出操作反馈。
几个重要的注意事项
- 确保映射文件里的每行格式正确:旧文件名和新文件名之间用空格或制表符分隔就行,不管多少个都能被脚本识别
- 一定要先做测试!找几个文件放到单独的目录,写个测试用的映射文件先跑一遍,确认没问题再批量处理正式文件
- 如果你的文件名本身包含空格,完全不用担心,上面的脚本已经做了特殊处理,只要映射文件里的文件名和实际文件完全一致就可以
备注:内容来源于stack exchange,提问作者Katherine Chau
相关产品推荐
相关产品推荐

