山本です。

># Dir.glob: 柔軟だが、直感的とは言いがたい。glob処理にも無駄がある
>
>def rmdir2(root)
>    Dir.glob(root + "/**/[a-Z]*/").sort_by{|dir| dir.scan(%r[/]).size}.each do |dir|
>        Dir.glob(dir + "**/").sort_by{|path| -path.scan(%r[/]).size}.each do |subdir|
>            Dir.glob(subdir + "*") do |file|
>                File.delete(path)
>            end
>            Dir.rmdir(subdir)
>        end
>    end
>end

これは、下のでよさそうですね。これも直感的とはいえないけど、まだ許せるかも。

def rmdir2(root)
    Dir.glob(root + "/**/[a-z]*/**/").uniq.sort_by{|dir| -dir.scan(%r[/].size}.each do |dir|
        Dir.glob(dir + "*") do |file|
            File.delete(file)
        end
        Dir.rmdir(dir)
    end
end