HomeCourseModule 12 › Renaming and organising files in bulk

Renaming and organising files in bulk

Module 12 · Automating Boring Excel Tasks6 min readBeginner

What you'll learn

  • Bulk-rename files with a regex
  • Move files into dated subfolders
  • Always preview before renaming

Rename pattern

from pathlib import Path
import re

folder = Path("downloads")
for p in folder.glob("Report_*.xlsx"):
    new_name = re.sub(r"Report_(\d{4})(\d{2})(\d{2})",
                      r"report-\1-\2-\3",
                      p.stem) + p.suffix
    print(f"{p.name}  →  {new_name}")
    # p.rename(p.with_name(new_name))   # uncomment when ready
⚠️ Always dry-run first
Print the planned renames in a first pass. Only enable the actual p.rename() after you've eyeballed the output.

Move into dated folders

from datetime import datetime
for p in folder.glob("*.csv"):
    mtime = datetime.fromtimestamp(p.stat().st_mtime)
    target = folder / mtime.strftime("%Y-%m")
    target.mkdir(exist_ok=True)
    p.rename(target / p.name)

Key takeaways

  • Always dry-run renames before doing them.
  • Use regex for structured filename patterns.
  • Sort by modification date to organise into month folders.

Downloads cleaner

Sketch a script (don't enable rename yet) that moves every .pdf in your Downloads folder into Downloads/PDFs/ and every .xlsx into Downloads/Spreadsheets/.

📹 Video walkthrough
A video walkthrough of this lesson will be embedded here. Until then, the written walkthrough above mirrors what the video will cover step-for-step.