У меня есть много пустых каталогов, за исключением других пустых каталогов внутри них.Они также смешаны с другими каталогами, в которых есть файлы, поэтому я хочу удалить только пустые каталоги и их (теперь пустых) родителей.
Я придумал это:
empty_dirs = -> { Dir.glob("#{dir}/**/*").select { |d| File.directory?(d) && Dir.empty?(d) } }
empty_dirs.call.each { |d| Dir.rmdir(d) } until empty_dirs.call.empty?
Это прекрасно работает, но мне было интересно, есть ли стандартный способ - например, FileUtils.rmdir_r(dir)
- вместо того, чтобы писать цикл.