Skip to content

Instantly share code, notes, and snippets.

@igniteflow
Created September 19, 2011 16:41
Show Gist options
  • Star 52 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • 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())
@pythonadventurer
Copy link

Thank you, just what I was looking for.

@oyolal
Copy link

oyolal commented Nov 27, 2016

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

@voyeg3r
Copy link

voyeg3r commented Jan 20, 2017

What about changing possible single adding to them leading zeros, something like:
file-1.txt file-2.txt --> file-001.txt file-002.txt

@divyavittal
Copy link

How about renaming with appending zeroes like name00.txt,name01.txt and so on to all files at once?

@sspatil89
Copy link

@Ubermanusch
Copy link

The internet is a beautiful place my friends, cherish.

@BobKH
Copy link

BobKH commented Jan 9, 2018

Dear all. i want to write simple script that change entire file name in folder to test1,test2,test3 so on. actually i did it was so easy. but the thing i want is that the file name should change constantly.for instance, test1,test2,test3 and when i add example.txt file to folder the file must be changed to Test4. i got file exist error. by the way i don't want to remove file itself,only name,file content shouldn't be changed. hop i could make it clear to u.

@Hellstorm90
Copy link

What if I want to change names and not directories? 🐙

@mfdeux
Copy link

mfdeux commented Feb 16, 2018

@Hellstorm90 use os.path.isfile to check if file (or os.path.isdir to check if directory)

@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.

@a5pire
Copy link

a5pire commented Sep 3, 2018

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.

@pastitsio
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