Robert Klemme
2/9/2009 8:54:00 PM
On 09.02.2009 20:46, Mmcolli00 Mom wrote:
> Hi, I have a directory full of files and want to get the newest version
> of each out of the directory. The files look like below. Please tell me
> if you know a way to pull out the latest version of each. Thanks
>
> 34_web1_no2_09202008.txt
> 34_web1_no2_09212008.txt <--want to pull out this latest version
> 34_web2_no3_10122008.txt
> 34_web2_no3_10132008.txt <--want to pull out this latest version
>
> ******snippet*******************************************
>
> newsortfile = Dir["C:/Status2/*.html"].map{|@f|
> [@f,File.mtime(@f)]}.sort_by{|@i|@i[1]}
> @NewestFile = @i[1]
>
> Dir.entries("C:/Status2/").each do |filename|
> if File.mtime("C:/Status2/"+filename) == @NewestFile then
> puts filename
> end
> end
This is how I'd approach this:
dir = "C:/Status2"
files = Hash.new {|h,k| h[k] = []}
Dir[File.join(dir, "*.txt")].each do |f|
files[f[/^\d+_web\d+_no\d+/]] << File.join(dir, f)
end
files.each do |k,v|
puts v.sort_by! {|f| File.mtime(f)}.last
end
Cheers
robert