Ottieni sottodirectory immediate in ruby
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?
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?)