空のディレクトリを検索して削除するRubyスクリプト

引数に渡されたディレクトリ以下を検索して空だったディレクトリを削除します。

emptyDirDel.rb

# encoding: Windows-31J
# 空のディレクトリを削除する
require "find"

n = 0
Find.find(ARGV[0]) do |path|
        if FileTest.directory?(path)
                if Dir.entries(path).join == "..."
                        Dir.rmdir(path)
                        puts "削除: #{path}"
                        n += 1
                end
        end
end

puts "#{n}個のディレクトリを削除しました"

> ruby emptyDirDel.rb ディレクトリ
みたいな感じで使います。

このままだと処理終了後すぐにウィンドウが消えてしまって何消したかわからないので、僕は以下のようなバッチファイルを作って
emptyDirDel.bat

ruby emptyDirDel.rb "%1"
pause

あふwから
emptyDirDel.bat $F
というコマンドを呼んで使ってます。


Dir#rmdirメソッドは空ではないディレクトリは削除しないのでバグあっても致命的なことにはならないはず…。