From: Gibbs Tanton - tgibbs Date: 2005-07-08T04:45:00+09:00 Subject: Re: recursively descend and rename files. Would renaming things as you go interfere with File.find or does it slurp all the file names up before hand? -----Original Message----- From: dblack@wobblini [mailto:dblack@wobblini] On Behalf Of David A. Black Sent: Thursday, July 07, 2005 2:38 PM To: ruby-talk ML Subject: Re: recursively descend and rename files. Hi -- On Fri, 8 Jul 2005, Ezra Zygmuntowicz wrote: > Hello list- > Could someone please shed some light on this situation for me? I have a > huge folder of logos that are named all willy nilly with weird characters and > spaces. I need to recursively descend through all of these folders and rename > each image so the names only contain [a-z0-9.-]. That part is fine I already > have the regex ready to do this. I need to know how to rename these files as > I recurse through the directory tree. I have this code so far: > > path = "/Volumes/Users/ez/LOGOS" > files = [] > require 'find' > Find.find(path) do |file| > files << file if file=~ /.eps$/ > end > > > > This leaves me with an array of good filenames but they have their complete > path as well. What I need help with is for each file, pul just the file name > out of the path, do some gsub's on it and then rename it with the output of > the gsubs. So after all is said and done the original files will be renamed > to be compliant with the regexes I run on each one. > > Can some one please point me in the right direction? You could just do the operation as you go: Find.find(path) do |file| fix(file) if /.eps$/.match(file) # or whatever end The fact that it's got the path attached shouldn't matter for the renaming operation, since you're not chdir'ing. David -- David A. Black dblack@wobblini.net ********************************************************************** The information contained in this communication is confidential, is intended only for the use of the recipient named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication is strictly prohibited. If you have received this communication in error, please re-send this communication to the sender and delete the original message or any copy of it from your computer system. Thank You.