Domanda

Sto provando a scrivere un semplice script ruby ??che copierà un file nelle sottodirectory immediate di una directory. Come otterrei solo le sottodirectory immediate?

È stato utile?

Soluzione

Dir.glob (" ** / ") restituirà un array di tutti i percorsi sotto la directory corrente. Da lì puoi filtrare l'elenco e copiare un file con File.copy (da, a)

Altri suggerimenti

Supponendo che tu volessi solo le sottodirectory immediate , potresti usare Dir ['* /'] (che combina le risposte di Micheal Sepcot e glenra).

Se intendi trovare tutte le sottodirectory immediate (solo un livello al di sotto di dove ti trovi), prova questo:

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

Cioè: cambia directory da qualche parte, costruisci un array di file trovato lì, rifiuta quegli elementi array che non sono directory e restituisce il risultante arretrato abbattuto.

Probabilmente il modo migliore per gestire i file in Ruby è Nome percorso . Combina metodi di classe da alcuni moduli basati su file in una classe OOP piacevole da usare. Quindi non è necessario passare il valore in un metodo come avresti dovuto con Dir o File , puoi semplicemente chiamare il metodo sull'oggetto stesso.

Ecco come stampare le sottodirectory immediate:

require 'pathname'

puts Pathname('some/directory').children.select(&:directory?)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top