返回顶部
🇺🇸 English
🇨🇳 简体中文
🇨🇳 繁體中文
🇺🇸 English
🇯🇵 日本語
🇰🇷 한국어
🇫🇷 Français
🇩🇪 Deutsch
🇪🇸 Español
🇷🇺 Русский
b

batch-file-renamer

Batch rename files with powerful patterns, regex support, and preview functionality. Use when organizing large numbers of files, standardizing naming conventions, adding timestamps, sequential numbering, or cleaning up messy filenames. Ideal for photo management, media libraries, log files, and project cleanup tasks.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
351
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

batch-file-renamer

# 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 ```python 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 ```python 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 ```python 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) ```python 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 | Pattern | Description | Example | |---------|-------------|---------| | `r'^IMG_(\d+)'` | Match IMG_ prefix | `IMG_001.jpg` | | `r'\s+'` | Replace spaces | `My File.txt` → `My_File.txt` | | `r'[^\w\.]'` | Remove special chars | `file@#$%.txt` → `file.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 ```python 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 ```

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 batch-file-renamer-1776276477 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 batch-file-renamer-1776276477 技能

通过命令行安装

skillhub install batch-file-renamer-1776276477

下载

⬇ 下载 batch-file-renamer v1.0.0(免费)

文件大小: 2.23 KB | 发布时间: 2026-4-16 18:20

v1.0.0 最新 2026-4-16 18:20
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部