Получить немедленные подкаталоги в Ruby

StackOverflow https://stackoverflow.com/questions/800189

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать простой Ruby-скрипт, который будет копировать файл в ближайшие подкаталоги каталога.Как мне получить только непосредственные подкаталоги?

Это было полезно?

Решение

Dir.glob("**/") вернет массив всех путей в текущем каталоге.Оттуда вы можете отфильтровать список и скопировать файл с помощью File.copy(from, to)

Другие советы

Предполагая, что вы хотели только немедленный подкаталоги, вы можете использовать Dir['*/'] (который объединяет ответы Майкла Сепкота и Гленры).

Если вы хотите найти все немедленный подкаталоги (всего на один уровень ниже того, где вы находитесь), попробуйте следующее:

Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}

То есть:измените каталог где-нибудь, создайте массив найденных там файлов, отклоните те элементы массива, которые не являются каталогами, и верните полученный отбракованный массив.

Вероятно, лучший способ работы с файлами в Ruby — это Pathname.Он объединяет методы классов из нескольких файловых модулей в один удобный в использовании ООП-класс.Поэтому вам не нужно передавать значение в метод, как это было бы с Dir или File, вы можете просто вызвать метод самого объекта.

Вот как можно распечатать непосредственные подкаталоги:

require 'pathname'

puts Pathname('some/directory').children.select(&:directory?)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top