Obter subdiretórios imediatos em ruby
Pergunta
Eu estou tentando escrever um script ruby ??simples que irá copiar um arquivo para os subdiretórios imediatas de diretório. Como eu poderia obter apenas os subdiretórios imediatos?
Solução
Dir.glob("**/")
irá retornar uma matriz de todos os caminhos sob o diretório atual. De lá você pode filtrar a lista e copiar um arquivo com File.copy(from, to)
Outras dicas
Assumindo que você só queria o imediatos subdiretórios, você poderia usar Dir['*/']
(que combina as respostas de Micheal Sepcot e glenra'S).
Se você quer dizer para encontrar todas as imediato subdiretórios (apenas um nível abaixo de onde você está), tente o seguinte:
Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}
Isto é:. Altere o diretório em algum lugar, construir uma matriz de arquivos encontrados lá, rejeitar os elementos de matriz que não são diretórios, e devolver o arrray abatidos resultando
Provavelmente a melhor maneira de lidar com arquivos em Ruby é Pathname
. Ele combina métodos de classe de alguns módulos baseados em arquivos em uma classe OOP agradável de usar. Então, você não precisa para passar o valor em um método como você teria que com Dir
ou File
, você pode simplesmente chamar o método no próprio objeto.
Veja como imprimir subdiretórios imediatos:
require 'pathname'
puts Pathname('some/directory').children.select(&:directory?)