Jano Svitok
1/14/2007 10:54:00 PM
On 1/14/07, Lovell <lovell.mcilwain@gmail.com> wrote:
Few more notes:
1. you get an array from Dir.entries, so instead of:
> test = []
> Dir.chdir("/Users/lem/pictures/")
> test[test.length] = Dir.entries("Amber Copy")
you can write just (unless you want to append the data, in which case
keep the first line, and use test += Dir.entries...):
Dir.chdir("/Users/lem/pictures/")
test = Dir.entries("Amber Copy")
2. You can rid of the counter using each_with_index:
> test.to_s.each do |pics|
> counter = 0
> File.rename(pics , "Amber " + counter.to_s + ".jpg")
> counter = counter + 1
> end
test.each_with_index do |pics, counter|
File.rename(pics , "Amber " + counter.to_s + ".jpg")
end
(NB: counter = counter +1 can be written as counter +=1)
3. if you use #{} in the string, you can get rid of to_s (plus it will
be a bit faster):
> File.rename(pics , "Amber " + counter.to_s + ".jpg")
File.rename(pics , "Amber#{counter}.jpg")
4. IMPORTANT: you most probably want to rename .jpg files only, so either add
if pics =~ /\.jpg$/
File.rename(pics , "Amber#{counter}.jpg")
end
or (the same):
File.rename(pics , "Amber#{counter}.jpg") if pics =~ /\.jpg$/
With this approach the skipped files will update the counter, so some
numbers will be missing. Therefore it's better to remove the files
from test array first, before renaming:
test = Dir.entries("Amber Copy").select {|f| f =~ /\.jpg$/}