Получить немедленные подкаталоги в рубине - PullRequest
18 голосов
/ 29 апреля 2009

Я пытаюсь написать простой скрипт ruby, который скопирует файл в непосредственные подкаталоги каталога. Как бы я получить только непосредственные подкаталоги?

Ответы [ 4 ]

61 голосов
/ 20 июля 2009

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

15 голосов
/ 29 апреля 2009

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

10 голосов
/ 30 апреля 2009

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

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

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

0 голосов
/ 06 июля 2018

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

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

require 'pathname'

puts Pathname('some/directory').children.select(&:directory?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...