Suppose I have a folder with thousands of photos named all randomly. How can one rename them as photo1, photo2,...,photo1000 from the command-line/terminal?
I will assume that you want to keep a proper suffix on the filenames:
c=1; for f in *.jpg ; do mv "$f" "photo$c.jpg" ; c=$(($c+1)) ; done
c=1: This initalizes the counter. You can set it to any number you like.
for f in *.jpg ; do: This signifies the beginning of a shell
for-loop. While much of shell-scripting can be difficult to make work when file names can contain spaces, newlines or other difficult characters, this construction is safe against even the most hostile file names.
mv "$f" "photo$c.jpg": This uses the counter
cand does the actual renaming of files. The file name
$fis in double-quotes to protect the name from the various possible shell expansions.
c=$(($c+1)): This increments the counter for the next loop
done: The signifies the end of the
You can use this code :
for i in *.jpg; do let j+=1 ; mv "$i" "photo$j.jpg" ; done