Batch renaming files and adding padded zeros to numbers
Today a customer sent me some hundred images I should add to an image gallery. Unfortunately the files were renamed under windows: uppercase JPG extension and - really annoying - the numbers didn't have leading zeros. Fortunately every Linux distribution has the "rename" command, so I fired up a Vagrant VM and renamed the files.
First I renamed the .JPG extensions to .jpg:
rename -n -f 's/\.JPG$/\.jpg/' *.JPG
The -n flag means "dry run", remove it when you actually rename the files. -f means force, which would overwrite existing files. I needed this, cause the files are synced with my Windows harddisk.
Next I removed white spaces and brackets:
rename -n 's/[\(\)]//' *
And finally I adjusted this answer I found on StackOverflow to fit my needs:
rename 's/(\d+)\.jpg/sprintf("%03s.jpg", $1)/e' *