如何通过脚本按指定规则成对重命名文件夹中的PDF文件
批量成对重命名PDF文件脚本方案
方案一:自动按顺序成对重命名(Python)
适合无需指定具体配对,按文件列表顺序自动两两分组的场景,编号从1000开始递增。
import os # 替换为你的目标文件夹路径 folder_path = "./" # 设置起始编号 start_num = 1000 # 获取文件夹内所有PDF文件 pdf_files = [f for f in os.listdir(folder_path) if f.lower().endswith(".pdf")] # 检查文件数量是否为偶数 if len(pdf_files) % 2 != 0: print("文件数量不是偶数,无法成对重命名") else: # 两两分组处理重命名 for i in range(0, len(pdf_files), 2): # 重命名为order_receipt_xxx.pdf old_order = os.path.join(folder_path, pdf_files[i]) new_order = os.path.join(folder_path, f"order_receipt_{start_num}.pdf") os.rename(old_order, new_order) # 重命名为invoice_xxx.pdf old_invoice = os.path.join(folder_path, pdf_files[i+1]) new_invoice = os.path.join(folder_path, f"invoice_{start_num}.pdf") os.rename(old_invoice, new_invoice) start_num += 1 print("重命名完成")
使用说明
- 将
folder_path替换为你的PDF文件所在文件夹的绝对/相对路径 - 运行脚本前请备份文件,避免意外
- 若需要调整配对顺序,可修改
pdf_files的排序逻辑(比如按修改时间排序:pdf_files.sort(key=lambda x: os.path.getmtime(os.path.join(folder_path, x))))
方案二:自动按顺序成对重命名(Shell脚本)
适合Linux/macOS用户,逻辑与Python方案一致。
#!/bin/bash # 替换为你的目标文件夹路径 FOLDER="./" # 设置起始编号 START_NUM=1000 # 获取所有PDF文件 PDF_FILES=("$FOLDER"*.pdf) # 检查文件数量是否为偶数 if (( ${#PDF_FILES[@]} % 2 != 0 )); then echo "文件数量不是偶数,无法成对重命名" exit 1 fi # 两两分组处理重命名 for (( i=0; i<${#PDF_FILES[@]}; i+=2 )); do mv "${PDF_FILES[$i]}" "$FOLDER/order_receipt_$START_NUM.pdf" mv "${PDF_FILES[$i+1]}" "$FOLDER/invoice_$START_NUM.pdf" ((START_NUM++)) done echo "重命名完成"
使用说明
- 将脚本保存为
rename_pairs.sh - 执行
chmod +x rename_pairs.sh赋予执行权限 - 运行脚本即可,同样建议先备份文件
方案三:自定义配对映射重命名
如果已经明确每个原文件对应的新文件名(比如你给出的示例配对),可以用映射文件精准重命名。
步骤1:创建映射文件
在文件夹内新建rename_map.txt,内容格式如下(按你的配对需求填写):
file131.pdf = order_receipt_1000.pdf file304.pdf = invoice_1000.pdf file542.pdf = order_receipt_1001.pdf file194.pdf = invoice_1001.pdf # 后续文件依次类推
步骤2:运行映射重命名脚本
import os folder_path = "./" map_file = "rename_map.txt" with open(map_file, "r") as f: for line in f: line = line.strip() # 跳过空行和注释行 if not line or line.startswith("#"): continue # 拆分原文件名和新文件名 old_name, new_name = line.split(" = ") old_path = os.path.join(folder_path, old_name) new_path = os.path.join(folder_path, new_name) if os.path.exists(old_path): os.rename(old_path, new_path) else: print(f"文件 {old_name} 不存在,跳过") print("重命名完成")
内容的提问来源于stack exchange,提问作者lain44
相关产品推荐
相关产品推荐

