[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Delete files in a directory

Oscar Del Ben

11/3/2007 10:39:00 AM

Hello, this is my first post here, so first i would like to thanks all
the people who works for this site.

Well, i'm trying to set up a little script that should delete all the
files in a given drectory; the system should work like this:
-I have the name and the path of file = "/Users.....file1"
-from file, i should get the directory (I've used File.dirname(file))
-from that directory, i should delete all files and sub directories
except from the given file (in this case, file1)

I'm making confusion when i try to iterare on the files and irectory in
that folder, and i'm scared to make test of deleting files in the system

Oscar
--
Posted via http://www.ruby-....

4 Answers

Stefano Crocco

11/3/2007 1:24:00 PM

0

Note: parts of this message were removed by the gateway to make it a legal Usenet post.

Alle sabato 3 novembre 2007, Oscar Del ben ha scritto:
> Hello, this is my first post here, so first i would like to thanks all
> the people who works for this site.
>
> Well, i'm trying to set up a little script that should delete all the
> files in a given drectory; the system should work like this:
> -I have the name and the path of file = "/Users.....file1"
> -from file, i should get the directory (I've used File.dirname(file))
> -from that directory, i should delete all files and sub directories
> except from the given file (in this case, file1)
>
> I'm making confusion when i try to iterare on the files and irectory in
> that folder, and i'm scared to make test of deleting files in the system
>
> Oscar

If I understand correctly what you need to do, this should work.

require 'fileutils'

file_name = File.basename(file_path)
dir = File.dirname(file_path)
Dir.foreach(dir) do |f|
if f == file_name or f == '.' or f == '..' then next
elsif File.directory?(f) then FileUtils.rm_rf(f)
else FileUtils.rm( f )
end
end

To test the script, you can replace FileUtils.rm_rf(f) and FileUtils.rm(f) respectively with

FileUtils.rm_rf( f, :noop => true, :verbose => true)

and

FileUtils.rm( f, :noop => true, :verbose => true)

With those arguments, FileUtils.rm and FileUtils.rm_rf don't actually delete the files (or directories), but print the operation that would be performed on screen, so you can check whether everything works. For more information on this, look at the ri documentation for FileUtils and FileUtils.rm.

I hope this helps

Stefano

Oscar Del Ben

11/4/2007 9:39:00 AM

0


Thank you Stefano, it work good for me!
--
Posted via http://www.ruby-....

Andrea Fazzi

11/5/2007 8:00:00 AM

0

require 'fileutils'

def delete(filename)
Dir["#{File.dirname(filename)}/*"].each do |file|
next if File.basename(file) == File.basename(filename)
FileUtils.rm_rf file, :noop => true, :verbose => true
end
end

USAGE:

delete 'path/to/file1'

Bye.
Andrea

Il giorno sab, 03/11/2007 alle 19.39 +0900, Oscar Del ben ha scritto:
> Hello, this is my first post here, so first i would like to thanks all
> the people who works for this site.
>
> Well, i'm trying to set up a little script that should delete all the
> files in a given drectory; the system should work like this:
> -I have the name and the path of file = "/Users.....file1"
> -from file, i should get the directory (I've used File.dirname(file))
> -from that directory, i should delete all files and sub directories
> except from the given file (in this case, file1)
>
> I'm making confusion when i try to iterare on the files and irectory in
> that folder, and i'm scared to make test of deleting files in the system
>
> Oscar


Oscar Del Ben

11/5/2007 1:44:00 PM

0

Thank you!
--
Posted via http://www.ruby-....