Removing files in directtories

J

John Maclean

Almost there... I've included line 7 as I'd like to be able to remove
files from a directory using code blocks. Commented it out for now
until I can work out how it's done. Suggestions appreciated.

#!/usr/bin/ruby -w
def back_up
backdir = ENV["HOME"] + "/foo/"
puts "about to backup some files and tar them into ~/foo"
puts "listing data in ~/foo"
Dir.foreach(backdir) {|file_names|
# File.delete("#{backdir}" + file_names)
puts File.directory?
file_names }
end
back_up
 
W

William James

John said:
Almost there... I've included line 7 as I'd like to be able to remove
files from a directory using code blocks. Commented it out for now
until I can work out how it's done. Suggestions appreciated.

#!/usr/bin/ruby -w
def back_up
backdir = ENV["HOME"] + "/foo/"
puts "about to backup some files and tar them into ~/foo"
puts "listing data in ~/foo"
Dir.foreach(backdir) {|file_names|
# File.delete("#{backdir}" + file_names)
puts File.directory?
file_names }
end
back_up

def back_up
backdir = ENV["HOME"] + "/foo/"
puts "about to backup some files and tar them into ~/foo"
puts "listing data in ~/foo"

Dir.foreach(backdir) { |name|
name = File.join( backdir, name )
if File.file?( name )
yield name
end
}
end

back_up { |file_name|
puts file_name
}
 
G

Glen

I wrote the following empty method as an extension to the builtin Dir
class. It iterates through a directory deleting all files and
directories, leaving the top level directory untouched.

class Dir

def empty()
self.each { |f|
if f !~ /^(\.{1,2})$/
file = File.join(self.path, f)

if File.stat(file).file?
File.delete(file) rescue nil;
elsif File.stat(file).directory?
d = Dir.new(file)
d.empty()
Dir.delete(file) rescue nil;
end
end
}
end

end
 
R

Robert Klemme

John Maclean said:
Almost there... I've included line 7 as I'd like to be able to remove
files from a directory using code blocks. Commented it out for now
until I can work out how it's done. Suggestions appreciated.

#!/usr/bin/ruby -w
def back_up
backdir = ENV["HOME"] + "/foo/"
puts "about to backup some files and tar them into ~/foo"
puts "listing data in ~/foo"
Dir.foreach(backdir) {|file_names|
# File.delete("#{backdir}" + file_names)
puts File.directory?
file_names }
end
back_up

I'm not sure what you want, but you might want to consider this:

printing:
ruby -r find -e 'Find.find( File.join( ENV["HOME"], "foo" ) ) {|f| puts f}'

deletion:
ruby -r fileutils -e 'FileUtils.rm_rf( File.join( ENV["HOME"], "foo" ) )'

Kind regards

robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,202
Messages
2,571,057
Members
47,664
Latest member
RoseannBow

Latest Threads

Top