2008年04月04日

[Ruby] 指定したディレクトリ以下のゴミファイルを一掃するスクリプト

プログラミングのリハビリついでにRubyで簡単なスクリプトを書いてみた。

内容はありふれたもので、引数で指定したディレクトリ以下にあるゴミファイル(#gomi.rb#とか、gomi.rb~といったもの)を一掃するスクリプトです。

昔、友達が仕事でコレつくってたなぁ。あの時はシェルスクリプトやったかな?今ならPerl書きそうやけど(笑)
もう3~4年前か・・・早いものです。



昔話はおいといて、さっさとスクリプトを晒しちゃいます。

sweep.rb
#!/usr/bin/env ruby

class Sweeper

PATTERN = ["*~",
"#*#"]

def retrieve(dir)
trash = Array.new

if File::ftype(dir) != "directory"
puts "this is not a directory."
exit
end

Dir::glob(make_trash_pattern(dir)).each{|f| trash.push(f) }
puts trash

if trash.size == 0
puts "trash file is not found."
else
puts "found #{trash.size} trash files."
puts "do you want to sweep these files? (y/n)"
sweep(trash) if gets.split(//)[0]=="y"
end

end

def sweep(trash)
trash.each{|t| File::delete(t) }
puts "#{trash.size} trash files are sweeped!!"
end

def make_trash_pattern(dir)
return PATTERN.map{|p| dir+"/**/"+p }.join("\0")
end

end

sweeper = Sweeper.new

sweeper.retrieve(ARGV.shift)


PATTERNがゴミファイルの形式で、このスクリプトの場合だと、#gomi.rb#やgomi.rb~といったファイルが削除対象となります。

違う形式のファイルを削除したい場合は、PATTERNを変更してあげてください。

使い方は、
$ ruby sweep.rb ~/
みたいに、引数にディレクトリを指定してあげるだけです。


Rubyを書ける偉い方、もっといい書き方があればご指南ください。
よろしくお願いしますm(__)m
posted by yu at 17:10 | Comment(0) | TrackBack(0) | Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/92230736
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。