I often come across files than are named 1..9 and then go to 10…99. The problem is many Linux programs begin with 1, then go to 10, etc. The sorting is wrong. Fortunately the rename command comes to our rescue:
rename 's/\d+/sprintf("%05d", $&)/e' *.jpg
Running the above command looks for numbers in the name of JPG files (in the current directory) and renames the file to ensure there are 5 digits in the filename. Now, instead of 1.jpg, your file will be named 00001.jpg. Handy.
Thanks to this forum for the information.
A quick handy little way to add a prefix to files in bash (taken from here)
for f in * ; do mv "$f" "PRE_$f" ; done
In my case I wanted to rename all sub-100 filenames to have an extra zero so sorting played nicely with filenames beginning with 100+. To accomplish this I found about the rename command (thanks to this site.) The command I used to enforce natural sorting was the following:
rename 's/\d+/sprintf("%03d", $&)/e' *
The command looked for anything beginning with a number, then used sprintf to make the number 3 digits. The asterisk instructed the rename command to work on every file. Success.
In migrating Splunk indexes I came across the need to add an incrementing suffix of _(numbers) to a bunch of directories. For example, renaming directories
After a bunch of searching I settled on this approach of using a simple bash loop to accomplish this:
I=100; for F in db_*; do mv $F $F\_$I; I=$((I+1)); done
There is an initial variable, I, which is set to 100. The for loop goes through each file beginning with db_ and then renames it adding the proper suffix in the iteration (_###). The last step is to increment the value of I.
Replace I for whatever you want you suffix to begin with and change db_* with whatever the criteria for the files you want to rename are. Simple, but it works.