Suppose I have an Excel sheet, which has the some numbers say:
77787
45877
78985 so on...
Now I have an directory called as "D://Filehosting" in windows 7
machine. under that directory I have some 500 folders, each of them
having 120 files in it. Now I want to delete the contents of each folder
which which are 2 months older from the current date. Now the folders
are arranged something like below:
D://Filehosting/Document77787
D://Filehosting/Document45877 .. so on
Script should take the numbers as mentioned above, and accordingly find
the right directory and accordingly delete the contents.Must check if
the if the folder exists or not before content deletion approach.
what I have is only the Request number and the base directory
Filehosting. then how would I make Document77787 so on.. on the fly?
Probably. I can't help you with reading the numbers from the Excel
sheet but assuming you have those numbers in an Array or Set you could
do something like this:
require 'pathname'
require 'fileutils'
DELTA = 2 * 30 * 24 * 60 * 60
base = Pathname "D:/Filehosting"
limit = Time.now - DELTA
numbers.each do |num|
dir = base + "Document#{num}"
next unless dir.directory?
newest = dir.mtime
dir.find do |file|
newest = [newest, file.mtime].max
end
FileUtils.rm_rf dir if newest < limit
end
Cheers
robert
···
On Thu, Jan 10, 2013 at 10:01 AM, Arup Rakshit <lists@ruby-forum.com> wrote:
Hi,
Suppose I have an Excel sheet, which has the some numbers say:
77787
45877
78985 so on...
Now I have an directory called as "D://Filehosting" in windows 7
machine. under that directory I have some 500 folders, each of them
having 120 files in it. Now I want to delete the contents of each folder
which which are 2 months older from the current date. Now the folders
are arranged something like below:
D://Filehosting/Document77787
D://Filehosting/Document45877 .. so on
Script should take the numbers as mentioned above, and accordingly find
the right directory and accordingly delete the contents.Must check if
the if the folder exists or not before content deletion approach.
what I have is only the Request number and the base directory
Filehosting. then how would I make Document77787 so on.. on the fly?
PS: You can as well ignore the Excel and read directories from the file system:
Pathname.glob(base + "Document*").each do |dir|
...
end
Kind regards
robert
···
On Thu, Jan 10, 2013 at 10:19 AM, Robert Klemme <shortcutter@googlemail.com> wrote:
On Thu, Jan 10, 2013 at 10:01 AM, Arup Rakshit <lists@ruby-forum.com> wrote:
Hi,
Suppose I have an Excel sheet, which has the some numbers say:
77787
45877
78985 so on...
Now I have an directory called as "D://Filehosting" in windows 7
machine. under that directory I have some 500 folders, each of them
having 120 files in it. Now I want to delete the contents of each folder
which which are 2 months older from the current date. Now the folders
are arranged something like below:
D://Filehosting/Document77787
D://Filehosting/Document45877 .. so on
Script should take the numbers as mentioned above, and accordingly find
the right directory and accordingly delete the contents.Must check if
the if the folder exists or not before content deletion approach.
what I have is only the Request number and the base directory
Filehosting. then how would I make Document77787 so on.. on the fly?
Can it be done using Ruby?
Probably. I can't help you with reading the numbers from the Excel
sheet but assuming you have those numbers in an Array or Set you could
do something like this:
require 'pathname'
require 'fileutils'
DELTA = 2 * 30 * 24 * 60 * 60
base = Pathname "D:/Filehosting"
limit = Time.now - DELTA
numbers.each do |num|
dir = base + "Document#{num}"
next unless dir.directory?
newest = dir.mtime
dir.find do |file|
newest = [newest, file.mtime].max
end
On Thu, Jan 10, 2013 at 10:01 AM, Arup Rakshit <lists@ruby-forum.com> > wrote:
numbers.each do |num|
dir = base + "Document#{num}"
next unless dir.directory?
newest = dir.mtime
dir.find do |file|
newest = [newest, file.mtime].max
end
FileUtils.rm_rf dir if newest < limit
end
Cheers
robert
Thanks Robert for your help! Now what such "#" operator is doing? Could
you just guide me? Any other package which can do the same instead of
"stdlib", would you refer? I would like to read file system module of
Ruby.