How can I batch rename a set of filenames in Linux?
I have a folder with images named:
pic001-2.png
pic002-2.png
pic003-2.png
How do I rename them to the following?
pic001.png
pic002.png
pic003.png
I have tried mv "pic*-2.png" "pic*.png"
but keep getting errors.
Solution 1:
This will delete the first -2
found in each filename:
for f in pic*-2.png; do
mv "$f" "${f/-2/}"
done
To test it, just prepend echo
to the mv
line.
Solution 2:
You need the appropriately named 'rename' command!
Try something like this:
rename 's/(pic\d+)-\d\.jpg/$1.jpg/' pic*.jpg
It takes a perl regular expression as the first argument, so your pattern-matching and manipulation options are pretty extensive. See the rename(1) man page for full details.