# Removing files in directtories

**URL:** <https://www.ruby-forum.com/t/removing-files-in-directtories/69892>\
**Category:** Ruby\
**Created:** [February 18, 2006, 1:23am UTC](https://www.ruby-forum.com/t/removing-files-in-directtories/69892 "2006-02-18T01:23:09Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jmaenpaa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9de053/32.png) [@jmaenpaa](https://www.ruby-forum.com/u/jmaenpaa)\
**Post date:** [February 18, 2006, 1:23am UTC](https://www.ruby-forum.com/t/removing-files-in-directtories/69892/1 "2006-02-18T01:23:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jmaenpaa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9de053/32.png) [@jmaenpaa](https://www.ruby-forum.com/u/jmaenpaa)\
**Post date:** [February 18, 2006, 7:58am UTC](https://www.ruby-forum.com/t/removing-files-in-directtories/69892/2 "2006-02-18T07:58:51Z")

</div>

John M. wrote:

> # File.delete("#{backdir}" + file\_names)
> 
> puts File.directory?  
> file\_names }  
> end  
> back\_up
> 
> –  
> John M.  
> MSc (DIC)  
> 07739 171 531

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  
}

---

<div class="post-metadata">

**Author:** ![jmaenpaa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9de053/32.png) [@jmaenpaa](https://www.ruby-forum.com/u/jmaenpaa)\
**Post date:** [February 19, 2006, 4:26am UTC](https://www.ruby-forum.com/t/removing-files-in-directtories/69892/3 "2006-02-19T04:26:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jmaenpaa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/9de053/32.png) [@jmaenpaa](https://www.ruby-forum.com/u/jmaenpaa)\
**Post date:** [February 19, 2006, 11:44am UTC](https://www.ruby-forum.com/t/removing-files-in-directtories/69892/4 "2006-02-19T11:44:56Z")

</div>

John M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> # 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

```
