如何批量替换文件夹中所有文件名的指定子字符串?
没问题!批量替换文件名里的指定子串是很常见的需求,我给你几种不同平台都能用的实用方法,你按需选择:
方法1:Python脚本(跨平台,Windows/macOS/Linux通用)
如果你懂一点Python,这个方法最灵活,还能自定义更多规则:
import os # 配置参数:替换成你的实际信息 folder_path = "/path/to/your/folder" # Windows路径写成类似 "C:\\Users\\YourName\\Documents" old_substring = "03_2020" new_substring = "04_2023" # 遍历文件夹内的所有文件 for filename in os.listdir(folder_path): file_full_path = os.path.join(folder_path, filename) # 只处理文件(跳过子文件夹) if os.path.isfile(file_full_path): if old_substring in filename: # 生成新文件名 new_filename = filename.replace(old_substring, new_substring) new_full_path = os.path.join(folder_path, new_filename) # 执行重命名 os.rename(file_full_path, new_full_path) print(f"已完成:{filename} → {new_filename}")
小提示:运行前可以先注释掉os.rename那一行,只打印新文件名,确认效果没问题再执行重命名操作。
方法2:PowerShell(Windows系统专用)
如果用Windows,直接用PowerShell就能快速搞定,不用写复杂脚本:
# 替换成你的文件夹路径,比如 "C:\Users\YourName\Documents" $folderPath = "你的文件夹路径" Get-ChildItem -Path $folderPath | Rename-Item -NewName { $_.Name -replace "03_2020", "04_2023" }
预览效果:不想直接修改的话,加-WhatIf参数先看修改预览:
Get-ChildItem -Path $folderPath | Rename-Item -NewName { $_.Name -replace "03_2020", "04_2023" } -WhatIf
方法3:Bash命令(Linux/macOS系统专用)
在Linux或macOS的终端里,一行命令就能完成批量替换:
# 替换成你的文件夹路径,比如 "/Users/YourName/Documents" for file in /path/to/your/folder/*03_2020*; do mv "$file" "${file//03_2020/04_2023}" done
预览效果:把mv换成echo,先打印要执行的重命名操作:
for file in /path/to/your/folder/*03_2020*; do echo "将重命名:$file → ${file//03_2020/04_2023}" done
通用注意事项
- 先备份文件! 不管用哪种方法,建议先把文件夹里的文件复制一份备份,避免操作失误导致文件丢失
- 如果需要递归处理子文件夹里的文件:
- Python里改用
os.walk()遍历所有层级 - PowerShell加
-Recurse参数:Get-ChildItem -Path $folderPath -Recurse - Bash用
find命令:find /path/to/your/folder -type f -name "*03_2020*" -exec mv {} "${0//03_2020/04_2023}" \;
- Python里改用
内容的提问来源于stack exchange,提问作者user13679801
相关产品推荐
相关产品推荐

