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.
References
The following links helped me figure this out, so it’s only right to mention them.
Changing file extensions in bulk using Git Bash