2

I have a Media Temple (dv) server which I am setting Magento up on.

I have uploaded a few thousand images to the /media/import directory that the client has provided me with. The problem is, some images are .jpg and others are .JPG.

Is there a way of batch renaming them on the server? I really don't want to have to do it locally and the re-upload them all.

I would ideally make them all lowercase so that they are uniform with the other image naming schemes used by Magento.

Thanks,

Danny

2 Answers 2

3

A bash suggestion:

 for file in *.JPG; do newfile=`echo $file|sed 's/.JPG$/.jpg/'` ; mv -i "$file" "$newfile" ; done 

It loops over all the files with a .JPG extension, and for each of them it uses sed to construct the new filename by turning a terminal .JPG into a terminal .jpg, and performs the mv. The -i is just in case you have a fred.JPG and a fred.jpg already. Don't forget to distinguish between single quotes and backticks, both of which are used, and aren't interchangeable.

4
  • 2
    Or use the preferred $(). Also, variables that contain filenames should always be quoted in case there are spaces in the names. Commented Nov 12, 2010 at 15:15
  • Dennis is absolutely right, I should have thought of that, and have modified the above accordingly. On the other hand, filenames with spaces are an aberration and should be avoided anyway! (opinion! opinion!) Commented Nov 12, 2010 at 16:26
  • Should I just run this from within the directory using Terminal? Commented Nov 12, 2010 at 20:43
  • @dannymcc: Yes. MadHatter: Photographs and music are two of the file types that one should expect to spaces in their names. Commented Nov 12, 2010 at 22:33
1

If you have the utility called rename installed (it's a Perl script) you can do:

rename 'y/A-Z/a-z/' * 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.