空のディレクトリを検索して削除する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メソッドは空ではないディレクトリは削除しないのでバグあっても致命的なことにはならないはず…。