user1060502
user1060502

Reputation: 33

Python Script to Change Folder Names

I'm on OS X and I'm fed up with our labeling system where I work. The labels are mm/dd/yy and I think that they should be yy/mm/dd. Is there a way to write a script to do this? I understand a bit of Python with lists and how to change the position of characters.

Any suggestions or tips?

What I have now:

083011-HalloweenBand
090311-ViolaClassRecital
090411-JazzBand

What I want:

110830-HalloweenBand
110903-ViolaClassRecital
110904-JazzBand

Thanks

Upvotes: 2

Views: 443

Answers (3)

matchew
matchew

Reputation: 19675

i know you asked for python, but I would do it from the shell. this is a simple one liner.

ls | awk '{print "mv " $0 FS substr($1,5,2) substr($1,1,4) substr($1,7) }' | bash

I do not use osx but I think it is a bash shell. you may need to rename bash to sh, or awk to gawk.

but what that line is doing is piping the directory listing to awk which is printing "mv" $0 (the line) and a space (FS = field separator, which defaults to space) then two substrings.

substr(s,c,n). This returns the substring from string s starting from character position c up to a maximum length of n characters. If n is not supplied, the rest of the string from c is returned.

lastly this is piped to the shell. allowing it to be executed. This works without problems on ubuntu and variations of this command I use quite a bit. a version of awk (awk,nawk,gawk) should be isntalled on osx which I believe uses bash

Upvotes: 0

Andrew Clark
Andrew Clark

Reputation: 208665

Assuming the script is in the same directory as the files you want to rename, and you already have the list of files that you want to rename, you can do this:

for file in rename_list:
    os.rename(file, file[4:6] + file[:2] + file[2:4] + file[6:])

Upvotes: 1

Brian Lyttle
Brian Lyttle

Reputation: 14579

There is a Q&A with information on traversing directories with Python that you could modify to do this. The key method is walk(), but you'll need to add the appropriate calls to rename().

As a beginner it is probably best to start by traversing the directories and writing out the new directory names before attempting to change the directory names. You should also make a backup and notify anyone who might care about this change before doing it.

Upvotes: 0

Related Questions