← 返回
效率工具 中文

Batch File Renamer

Batch rename files with powerful patterns, regex support, and preview functionality. Use when organizing large numbers of files, standardizing naming convent...
批量重命名文件,支持强大的模式、正则表达式和预览功能。适用于整理大量文件、统一起名规范。
leonardodpanda
效率工具 clawhub v1.0.0 1 版本 99881.5 Key: 无需
★ 0
Stars
📥 843
下载
💾 24
安装
1
版本
#latest

概述

Batch File Renamer

Powerful batch file renaming with patterns, regex, and preview.

When to Use

  • Renaming hundreds of photos from IMG_001.jpg to Vacation_2025_001.jpg
  • Adding timestamps to log files
  • Cleaning up messy download folders
  • Standardizing naming conventions across projects
  • Sequential numbering for ordered content
  • Removing special characters from filenames

Quick Start

Basic Rename

import os
import re
from datetime import datetime

def batch_rename(directory, pattern, replacement):
    """
    Rename files matching pattern
    
    Args:
        directory: Path to files
        pattern: Regex pattern to match
        replacement: Replacement string
    """
    renamed = []
    for filename in os.listdir(directory):
        new_name = re.sub(pattern, replacement, filename)
        if new_name != filename:
            old_path = os.path.join(directory, filename)
            new_path = os.path.join(directory, new_name)
            os.rename(old_path, new_path)
            renamed.append((filename, new_name))
    return renamed

# Example: Add prefix
batch_rename('./photos', r'^(.*)$', r'Vacation_2025_\1')

Sequential Numbering

def number_files(directory, prefix='', digits=3, extension=None):
    """Add sequential numbers to files"""
    files = sorted([f for f in os.listdir(directory) 
                   if extension is None or f.endswith(extension)])
    
    renamed = []
    for i, filename in enumerate(files, 1):
        old_path = os.path.join(directory, filename)
        ext = os.path.splitext(filename)[1]
        new_name = f"{prefix}{str(i).zfill(digits)}{ext}"
        new_path = os.path.join(directory, new_name)
        os.rename(old_path, new_path)
        renamed.append((filename, new_name))
    
    return renamed

# Usage
number_files('./downloads', prefix='Project_', digits=3)
# Result: Project_001.pdf, Project_002.jpg, ...

Add Timestamps

def add_timestamp(directory, date_format='%Y%m%d'):
    """Add date prefix to files"""
    timestamp = datetime.now().strftime(date_format)
    
    for filename in os.listdir(directory):
        old_path = os.path.join(directory, filename)
        name, ext = os.path.splitext(filename)
        new_name = f"{timestamp}_{name}{ext}"
        new_path = os.path.join(directory, new_name)
        os.rename(old_path, new_path)

# Usage
add_timestamp('./logs')
# Result: 20250303_error.log, 20250303_debug.log

Preview Mode (Safe)

def preview_rename(directory, pattern, replacement):
    """Preview changes without renaming"""
    changes = []
    for filename in os.listdir(directory):
        new_name = re.sub(pattern, replacement, filename)
        if new_name != filename:
            changes.append(f"{filename} -> {new_name}")
    return changes

# Preview first
preview = preview_rename('./files', r'IMG_(\d+)', r'Photo_\1')
for change in preview:
    print(change)

Common Patterns

PatternDescriptionExample
-------------------------------
r'^IMG_(\d+)'Match IMG_ prefixIMG_001.jpg
r'\s+'Replace spacesMy File.txtMy_File.txt
r'[^\w\.]'Remove special charsfile@#$%.txtfile.txt
r'\.jpeg$'Change extension.jpeg.jpg

Best Practices

  1. Always preview first - Use preview_rename() before actual rename
  2. Backup important files - Renaming is irreversible
  3. Test on single file - Verify pattern works as expected
  4. Use regex groups - Capture parts of filename with (\d+) etc.

Safety Features

def safe_rename(directory, pattern, replacement, dry_run=True):
    """Safe rename with dry-run option"""
    changes = []
    
    for filename in os.listdir(directory):
        new_name = re.sub(pattern, replacement, filename)
        if new_name != filename:
            changes.append((filename, new_name))
    
    if dry_run:
        print("DRY RUN - Changes that would be made:")
        for old, new in changes:
            print(f"  {old} -> {new}")
        return changes
    else:
        for old, new in changes:
            os.rename(
                os.path.join(directory, old),
                os.path.join(directory, new)
            )
        return changes

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-30 09:53 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

productivity

Nano Pdf

steipete
使用nano-pdf CLI通过自然语言指令编辑PDF
★ 275 📥 114,747
productivity

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 438 📥 147,251
security-compliance

REST API Tester

leonardodpanda
测试REST API,支持自定义请求头、认证方式和请求体。用于调试API端点、测试认证流程、验证响应等场景。
★ 1 📥 1,115