Rename file to uppercase except extension

Hi,

I am trying to make all file in the directory uppercase but not their extension (ex: image.jpg becoming IMAGE.jpg)

here is code i am trying.

$ ls | while read file
do
name=${file%%.*}
newfilename=$(echo $name | tr 'a-z' 'A-Z')
mv $file $newfilename
done

any suggestions of using awk and toupper for achiving my goal?

 
for i in *.jpg; do ext=${i##*.}; name=$(basename "$i" ".$ext" | tr '[a-z]' '[A-Z]').$ext; cp $i $name; done
1 Like

Thanks itkamaraj.

using awk

 
for i in *.jpg; do cp $i $(echo $i | nawk -F. '{print toupper($1)"."$2}'); done
1 Like

Thank you very much.