bash to batch rename files with adding numbers

qliq picture qliq · Oct 19, 2013 · Viewed 9.1k times · Source

I have a bunch of .jpg files with random names. I want a bash script to rename them like this:

basename-0.jpg
basename-1.jpg
basename-2.jpg
.
.
.
.
basename-1000.jpg

I wrote this:

n = 0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; n+=1;  done

But the problem with the above bash is that in the loop, n is considered as string so n+1 just adds another '1' to the end of newly moved file. Appreciate your hints.

Answer

Yann Moisan picture Yann Moisan · Oct 19, 2013

Use $((expression)) for arithmetic expansion in bash shell

n=0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; n=$((n+1));  done