The workshop · Edition No. 30 · 24 Sep 2026

ayoisaiah/f2

Renames many files at once from a pattern, prints the full list of changes before writing anything, and can undo a rename that went wrong.

← The workshopRead the whole edition →
07

ayoisaiah/f2

💎 hidden gem

2,432 stars · MIT · v2.2.2 (2025-11-10, the repository page and ungh agree) · Track this in Scout

Renames many files at once from a pattern, prints the full list of changes before writing anything, and can undo a rename that went wrong.

▶Repo detailsthe review · specs · pros & cons · install

What it is

F2 is a cross-platform command-line renamer written in Go. It matches files by text or by pattern, can pull information out of the files themselves — such as the date a photograph was taken — and defaults to a dry run so the result is visible before anything is written.

What it is good for. Anyone with a folder of downloads, scans, invoices or camera files named by four different programs in four different ways. It is also for anyone who has once renamed a batch wrongly and spent the evening undoing it.

Stars2,432
LicenceMIT
Latestv2.2.2 (2025-11-10, the repository page and ungh agree)
Good
  • Dry run by default. You see every old name and new name, and the rename only happens when you ask a second time.
  • It has an undo. If a rename does go wrong, one command puts the names back.
  • It can read EXIF data from photographs and tags from music files, so files can be renamed by the date a picture was taken rather than by the date it was copied.
Watch for
  • The newest release, v2.2.2, is dated 10 November 2025, while code landed on 22 June 2026. The release is ten months old; the project is not.
  • It is a command-line tool. There is no window, and the pattern syntax takes twenty minutes to learn properly.
  • Renaming is not moving. It changes names in place and does not sort files into folders.
Similar repositories
Install
# with Go installed
go install github.com/ayoisaiah/f2/v2/cmd/f2@latest
# or download the binary for your system from
# https://github.com/ayoisaiah/f2/releases
# see what would happen (nothing is changed)
f2 -f 'IMG_' -r 'holiday_' .
# do it
f2 -f 'IMG_' -r 'holiday_' . -x
Screenshots
ayoisaiah/f2: GitHub preview cardayoisaiah/f2: Screenshot 1

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.