# Newbie: Recursive deletion of files and dir

**URL:** <https://www.ruby-forum.com/t/newbie-recursive-deletion-of-files-and-dir/53015>\
**Category:** Ruby\
**Created:** [January 22, 2006, 10:34pm UTC](https://www.ruby-forum.com/t/newbie-recursive-deletion-of-files-and-dir/53015 "2006-01-22T22:34:03Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![FredrikC](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecae2f/32.png) [@FredrikC](https://www.ruby-forum.com/u/FredrikC)\
**Post date:** [January 22, 2006, 10:34pm UTC](https://www.ruby-forum.com/t/newbie-recursive-deletion-of-files-and-dir/53015/1 "2006-01-22T22:34:03Z")

</div>

Hi!  
I’m designing (newbie level) a script to clean up empty directories and  
old files recursivly. Something is wrong…works fine when not actually  
deleting anything, but when I start removing files and directories it  
ends prematurly… any heklp available…?

def thisDir(dirname,f)  
Dir.chdir(dirname)  
currDir=Dir.getwd  
nf=0  
nd=0  
fs=0.0

```
if Dir.entries(currDir).size>2 then
	Dir.foreach(currDir) {|x|
	if FileTest.file?(x) && (Time.now-File.mtime(x))/(60*60*24)>15 then
		f.puts("deleting file"+x)
		nf=nf+1
		fs=fs+File.stat(x).size
	end
	if FileTest.directory?(x) && x!="." && x!=".." then
		lV=thisDir(x,f)
		nf=nf+lV[0]
		nd=nd+lV[1]
		fs=fs+lV[2]
	end
	}
Dir.chdir("..")
end
if Dir.entries(currDir).size<=2 then
	Dir.chdir("..")
	f.puts("deleteting this directory:"+currDir)
	nd=nd+1
	#Dir.delete(currDir)
end

#Dir.chdir("..")

```

return [nf,nd,fs]  
end  
outFileName=“cleaned-”+Date.today.to\_s+".log"  
f=File.new(outFileName,“w”)  
values=thisDir("./",f)  
puts “Deleted “+values[0].to\_s+” files”  
puts “Deleted “+values[1].to\_s+” directories”  
puts “Total size deleted:”+(values[2]/(1024)).to\_s+" kB"

Any advice is appriciated

---

<div class="post-metadata">

**Author:** ![FredrikC](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecae2f/32.png) [@FredrikC](https://www.ruby-forum.com/u/FredrikC)\
**Post date:** [January 22, 2006, 10:52pm UTC](https://www.ruby-forum.com/t/newbie-recursive-deletion-of-files-and-dir/53015/2 "2006-01-22T22:52:19Z")

</div>

FredrikC wrote:

> Hi!  
> I’m designing (newbie level) a script to clean up empty directories and  
> old files recursivly. Something is wrong…works fine when not actually  
> deleting anything, but when I start removing files and directories it  
> ends prematurly… any heklp available…?
> 
> def thisDir(dirname,f)  
> Dir.chdir(dirname)  
> currDir=Dir.getwd  
> nf=0  
> nd=0  
> fs=0.0
> 
> if Dir.entries(currDir).size\>2 then  
> Dir.foreach(currDir) {|x|  
> if FileTest.file?(x) && (Time.now-File.mtime(x))/(60_60_24)\>15 then  
> f.puts(“deleting file”+x)  
> nf=nf+1  
> fs=fs+File.stat(x).size  
> end  
> if FileTest.directory?(x) && x!="." && x!="…" then  
> lV=thisDir(x,f)  
> nf=nf+lV[0]  
> nd=nd+lV[1]  
> fs=fs+lV[2]  
> end  
> }  
> Dir.chdir("…")  
> end  
> if Dir.entries(currDir).size\<=2 then  
> Dir.chdir("…")  
> f.puts(“deleteting this directory:”+currDir)  
> nd=nd+1  
> #Dir.delete(currDir)  
> end
> 
> #Dir.chdir("…")  
> return [nf,nd,fs]  
> end  
> outFileName=“cleaned-”+Date.today.to\_s+".log"  
> f=File.new(outFileName,“w”)  
> values=thisDir("./",f)  
> puts “Deleted “+values[0].to\_s+” files”  
> puts “Deleted “+values[1].to\_s+” directories”  
> puts “Total size deleted:”+(values[2]/(1024)).to\_s+" kB"
> 
> Any advice is appriciated

I did not read this code yet but take a look at ri FileUtils,  
it has useful methods including two that might be handy here:

FileUtils.rm\_rf  
FileUtils.mkdir\_p

E
