Skip to content

Instantly share code, notes, and snippets.

@igniteflow
Created September 19, 2011 16:41
Show Gist options
  • Save igniteflow/1226919 to your computer and use it in GitHub Desktop.
Save igniteflow/1226919 to your computer and use it in GitHub Desktop.
Python script to rename files in directory, transforming spaces to hyphens and the chars to lowercase
import os
"""
Renames the filenames within the same directory to be Unix friendly
(1) Changes spaces to hyphens
(2) Makes lowercase (not a Unix requirement, just looks better ;)
Usage:
python rename.py
"""
path = os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(filename, filename.replace(" ", "-").lower())
@Jaydaar
Copy link

Jaydaar commented Mar 6, 2018

works great exactly what i needed

@megharangaswamy
Copy link

Thanks :) works great for me.

@vishaldeshmukh007
Copy link

Thanks..! it worked for me. Though my requirement is bit different.

@metalox
Copy link

metalox commented Jul 15, 2018

Thank you for sharing. Very useful "as is" and a useful little script for learning :)

@elnazzz1
Copy link

elnazzz1 commented Aug 9, 2018

I have two cameras in the raspberry pie that every time it overwrites the name of the image, for example, image 1 and image 2,
when I run it again, it overwrites on image 1 and image 2, how can I rename previous images to avoid overwriting?

Thank you

@kiranpatil222
Copy link

Thank you so much,,, I searched so many links to rename my files in a folder with a regular expression/pattern none worked, But this.

@balter-io
Copy link

Is there any way to extend this script down the tree to rename folders and files within folders???

@josean7link
Copy link

Thank you, that's what i was looking for.

@dicharal
Copy link

Does it read the names in ascending order?

@typopaul
Copy link

typopaul commented Oct 1, 2019

Great! It’s simple, it works. 👍 Thank you!

@rdegges
Copy link

rdegges commented Oct 25, 2019

There's a simpler way to do this using the linux rename command, if you'd like:

rename --force 's/ /-/g' *

If you run that on the CLI it'll rename all files in the current directory -- exchanging spaces for dashes.

@Lewiscowles1986
Copy link

@rdegges that does not make uppercase -> lowercase though.

@darshan4255
Copy link

how can i change only the first letter of a filename into uppercase??

@askfriends
Copy link

how about removing leading space in multiple files in a directory?
i have many files in a directory and each one start with a space. so how to batch remove that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment