rename is a Perl-powered command-line utility for batch-renaming files using regular expressions.
Installation
# macOS (Homebrew)
brew install rename
# Debian / Ubuntu
sudo apt install rename
Common Use Cases
Search & Replace
# Replace 'foo' with 'bar' in all .txt filenames
rename 's/foo/bar/' *.txt
# Global replacement (all occurrences)
rename 's/foo/bar/g' *.txt
Changing File Extensions
# Change all .jpeg files to .jpg
rename 's/\.jpeg$/\.jpg/' *.jpeg
# Alternative flag syntax
rename -s .jpeg .jpg *.jpeg
Lowercasing & Uppercasing
# Convert all filenames to lowercase
rename 'y/A-Z/a-z/' *
# Convert all filenames to uppercase
rename 'y/a-z/A-Z/' *
Stripping Whitespace & Characters
# Replace spaces with underscores
rename 's/ /_/g' *
# Remove leading numbers and dashes (e.g., '01 - Track.mp3' -> 'Track.mp3')
rename 's/^\d+\s*-\s*//' *.mp3
Testing & Safety Flags
# Dry run: print what would be renamed without modifying files (-n)
rename -n 's/draft_/final_/' *.md
# Verbose: print each renamed file (-v)
rename -v 's/draft_/final_/' *.md
# Interactive: prompt before overwriting existing files (-i)
rename -i 's/foo/bar/' *