2015-09-23 18 views
7

Se volessi ottenere tutte le file CSS e JavaScriptCome si fa a Dir.glob ma si escludono le directory?

Dir.glob("dir/**/*.{css,js}) 

mi dà roba non voglio che se c'è una cartella denominata stupidfolder.js. Vorrei solo cambiare il nome della cartella, ma non posso.

+0

non spiegate quello che stai cercando di fare, ma sembra che si desidera scendere in una directory alla ricerca di file specifici. E, in tal caso, la classe [Find] (http://ruby-doc.org/stdlib-2.2.3/libdoc/find/rdoc/Find.html) di Ruby è un ottimo strumento. La sua velocità di avvio è più veloce ed è più scalabile rispetto all'utilizzo di 'Dir.glob' che eseguirà prima la gerarchia, raccogliendo un elenco, quindi restituirà un array di tutto ciò che viene trovato. La documentazione di Find mostra come "sfogliare" le directory. –

+0

Sì Sto provando a scendere in una directory per ottenere i percorsi di tutti i file .css e .js, ma potrebbero esserci alcuni nomi di cartelle scadenti che terminano con .js, quindi vorrei che questi venissero esclusi. Non sapevo di trovare quindi lo controllerò. – kayla

+0

È un piccolo passo per eliminare le cartelle, qualunque sia il nome. 'File.directory? ('Percorso/a/cartella_or_file')' lo dirà. Ancora una volta, la documentazione dimostra in modo specifico come farlo. –

risposta

10

Non è possibile farlo con Dir.glob. Devi respingere quelle voci in modo esplicito.

only_files = Dir.glob('*').reject do |path| 
    File.directory?(path) 
end 
4

È possibile farlo con Dir.entries

Dir.entries('../directoryname').reject { |f| File.directory?(f) } 
4

Può essere esagerato per il vostro problema, ma rake definisce una classe FileList. È possibile sostituire Dir.glob con questa classe:

require 'rake' 
filelist = FileList.new("dir/**/*.{css,js}") 
filelist.exclude('**/stupidfolder.js') 
filelist.each do |file| 
    #... 
end 
+0

Questo è un modo indiretto per arrivare allo stesso punto. –

+0

Mi piace questa risposta, perché è qualcosa che un RakeFile dovrebbe essere in grado di fare. Solo una risposta alternativa, non una risposta rotonda. – Pred

Problemi correlati