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?

Foi útil?

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?)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top