You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本按指定规则成对重命名文件夹中的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("重命名完成")

使用说明

  1. 将folder_path替换为你的PDF文件所在文件夹的绝对/相对路径
  2. 运行脚本前请备份文件,避免意外
  3. 若需要调整配对顺序,可修改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 "重命名完成"

使用说明

  1. 将脚本保存为rename_pairs.sh
  2. 执行chmod +x rename_pairs.sh赋予执行权限
  3. 运行脚本即可,同样建议先备份文件

方案三:自定义配对映射重命名

如果已经明确每个原文件对应的新文件名(比如你给出的示例配对),可以用映射文件精准重命名。

步骤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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:25:40