How to rename file extension to lowercase?

It is really simple:

  1. Rename to something else than the same value with different case

    rename 's/\.JPG$/\.jpgaux/' *.JPG
    
  2. Now rename that something else to .jpg back again, but lowercase this time

    rename 's/\.jpgaux$/\.jpg/' *.jpgaux
    

Demo: http://paste.ubuntu.com/8853245/

Source: How to change extension of multiple files from command line? Thanks to Chakra!


really easy with mmv:

sudo apt install mmv

mmv \*.JPEG \#1.jpeg

If αғsнιη is right in his comment, and I think he is, OP's problem is that a similarly named file already exists. If that is the case, the script will have to check if the targeted file name (lowercase) already exists, and (only) if so, rename the original file additionally (not only lowercase extension) to prevent the name error, e.g.

image1.JPG

to

renamed_image1.jpg

since image1.jpg would raise an error

If so, a python solution to rename could be:

#!/usr/bin/env python3

import os
import shutil
import sys

directory = sys.argv[1]
for file in [f for f in os.listdir(directory) if f.endswith(".JPG")]:
        newname = file[:file.rfind(".")]+".jpg"
        if os.path.exists(directory+"/"+newname):
                newname = "renamed_"+newname
        shutil.move(directory+"/"+file, directory+"/"+newname)

The script renames:

image1.JPG -> image1.jpg

but if image1.jpg already exists:

image1.JPG -> renamed_image1.jpg

###How to use

Copy the script into an empty file, save it as rename.py, make it executable and run it by the command:

<script> <directory_of_files>

This works best I think, as perl supports running code in the regex

rename -n 's/(\.[A-Z]+$)/lc($1)/ge' *.*[A-Z]*

remove the -n to actually rename the files