Say you have a bunch of files like this:
file-01.jpg
file-02.jpg
...............
What if you want to mass rename them?
the rename tool can work just like sed
For Debian based distros:
Note "file" is what we search for and "newname" is what we replace it with, so substitute according to your requirements.
rename s/file/newname/ name-file-*.jpg
For RHEL Centos:
rename file newname file-*
Alternative way to batch rename files in Linux with bash using ls, sed and mv
for file in `ls -1`; do
newname=`echo $file|sed s/originalname/newname/g`
mv $file $newname
done
Just change "originalname" and "newname" in sed to match what you need.
The above doesn't work on spaces you'll need to use this code instead:
Based on this solution for not treating spaces as a new line or new variable in bash
For example the below code will replace all spaces with _
IFS=$(echo -en "\n\b")
for file in `ls -1`; do newname=`echo $file|sed s/" "/"_"/g`; mv $file $newname; done
Say if you have some filenames that have illegal samba characters and want to remove them.
In this example it is times with colons eg "14:30:32"
Sed searches for ":" and replaces with "" (nothing) but we could replace with _ - or whatever else.
for file in `ls -1`; do
newname=`echo $file|sed s/://g`
mv $file $newname
echo $newname
done
linux, bash, rename, centos, debian, ubuntusay, jpg, sed, distros, quot, newname, substitute, requirements, rhel, batch, ls, mv, echo, originalname, doesn, spaces, ll, variable, _, ifs, en, filenames, samba, characters, colons, eg, searches, replaces,