# Bulk rename with a live preview

> Rename hundreds of files at once: find/replace or regex, counters, case, crop, affixes, EXIF and audio-tag tokens, saved recipes — previewed first, one undo.

- Canonical: https://cwdio.com/features/bulk-rename/
- Updated: 2026-08-16
- Product: Cwdio File Manager (cwdio) — https://cwdio.com

Select the files, press <kbd>Shift+F2</kbd>, describe the change once, and watch every new name appear in a
table beside the old one. Nothing is renamed until you apply, conflicting rows are flagged and skipped,
and the entire batch undoes with one <kbd>Ctrl+Z</kbd>.

## What it does

- **Find and replace, or regex.** Literal or regular-expression find with capture groups, optional
  case-insensitivity, applied to the stem, the extension or the full name.
- **Counters.** `{n}`, `{nn}`, `{nnn}` with a configurable start and step, sequenced by selection order,
  name, date modified or date taken.
- **Case, crop, affix.** Upper, lower, Title Case or Sentence case (Unicode-aware, so Cyrillic re-cases
  correctly); remove N characters from the start or end; add a prefix and a suffix. Applied in a fixed
  order — replace, re-case, trim, wrap — so one recipe can do all four.
- **Metadata tokens.** Dates from the file (`{date}`, `{time}`, `{YYYY}`, `{MM}`, `{DD}`, `{HH}`, `{mm}`,
  `{ss}`, `{created}`), from a photo's EXIF (`{taken}` and parts), from audio tags (`{title}`, `{artist}`,
  `{album}`, `{track}`, `{year}`, `{genre}`), plus `{parent}` for the folder name. An unavailable value stays
  literal, so you can see it did not resolve.
- **Live validation.** Windows-invalid characters, reserved names and collisions are flagged per row;
  checkboxes exclude rows.
- **Saved recipes.** Save the complete configuration — find/replace, flags, scope, case, counter, crop,
  affix and numbering order — as a chip and re-apply it in one click later.
- **AI suggestions.** With an AI provider configured, a *Suggest names* row with an instruction box fills the
  same table with proposed names and a confidence chip each; they apply through the same preview and undo.
- **One undo.** Apply records a single undo entry; <kbd>Ctrl+Z</kbd> reverses every rename, including swaps and
  cycles.

## How to use it

1. Select the files (or use flat view to gather them from subfolders) and press <kbd>Shift+F2</kbd>.
2. Type what to find and what to replace it with — or leave Find empty and pick a case, a crop or an
   affix. Watch the New column update as you type.
3. Add a counter — `{nnn}` — and choose its order; add `{taken}` for photos or `{artist} - {title}` for
   music.
4. Check the table for red rows, untick anything you want left alone, and Apply. If it was wrong,
   <kbd>Ctrl+Z</kbd>.
5. Doing this every week? Save recipe.

A single file renames in place with <kbd>F2</kbd> — the row becomes an editor, the stem is pre-selected, and
<kbd>Esc</kbd> cancels.

## How the tokens are read

EXIF dates and camera fields come from a JPEG's APP1 block, audio tags from the head of the file (ID3v2,
FLAC and Ogg Vorbis comments, MP4 `ilst` atoms), all read through the same provider that lists the file —
so the tokens work for files inside an archive or on an SFTP server too. Values are fetched once when the
studio opens.

## What it deliberately does not do

- It never applies a row it cannot validate. Conflicts and invalid names are shown, not guessed around.
- ID3v1 (tail) tags, an MP4 whose metadata is at the end of the file, and TIFF/RAW/HEIC EXIF are not read
  yet; those tokens stay literal for such files.
- Recipes are labelled by their content (`find → replace`, `title · +v_…`), not by a name you give them.

## Related

- [Undo and the safety net](/features/undo-and-safety-net/) — why one Ctrl+Z covers the whole batch.
- [Views, columns and thumbnails](/features/views-columns-and-thumbnails/) — flat view, for gathering files across folders first.
- [AI assistant](/features/ai-assistant/) — where the name suggestions come from.

## Frequently asked questions

**Can I rename photos by the date they were taken?** Yes. The {taken} token, and its parts {takenYYYY}, {takenMM}, {takenDD} and {takentime}, come from the JPEG's EXIF date; {date}, {time} and {YYYY}…{ss} use the file's modified time and {created} its creation time. A counter such as {nnn} can be numbered by date taken, so “number these holiday photos 001, 002… in the order they were shot” is one recipe.

**Can it read music tags?** Yes. {title}, {artist}, {album}, {track}, {year} and {genre} are read from MP3 (ID3v2), FLAC and Ogg/Opus (Vorbis comments) and MP4/M4A (iTunes atoms), each value sanitised for a file name — AC/DC becomes AC_DC. {parent} inserts the file's own folder name, so a flat-view selection spanning albums can prefix each track with its album.

**What if two files would end up with the same name?** The preview flags conflicting and invalid rows (Windows-illegal characters, reserved names) before anything happens, and they are never applied. A name vacated by the plan itself is not a conflict, so renaming 1→2 while 2→3 works, and a swap or a cycle (a↔b) is carried out through a temporary name and rolled back as a unit if a step fails.

**Is it undoable?** The whole batch is one undo entry: Ctrl+Z restores every original name, Ctrl+Y re-applies. Rows you untick are excluded from both.
