Renaming multiple files in git

Git has a command that lets you move files, which is also used to rename files. If you want to rename multiple files, you have to do each file individually.

There is some relief, however. If you’re on Linux/Unix and using bash, or if you’re on Windows using git bash, you can rename multiple tracked files, using the find command, with the -exec option.

find . -name '*.txt' -exec sh -c 'git mv "$0" "${0%.txt}.md"' {} \;

The command shown above will rename all .txt files to .md.

find . -name '*_-_*.md' -exec sh -c 'git mv "$0" "${0//_-_/_}"' {} \;

This variant will replace _-_ in a filename with _.

Add the -n flag to the git mv command to do a dry-run. A dry-run will show you what is going to happen. I found this useful when the substitution looked like it was going to rename folders as well; I got round this by running the command in the sub-folder.


The following links helped me figure this out, so it’s only right to mention them.

Changing file extensions in bulk using Git Bash


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s