2012-01-17 19 views
6

Aquí son todas las cosas que he intentado:Rubí lista de archivos excluir una carpeta

files = FileList.new("c:/temp/**/*") do |file| 
    file.exclude("c:/temp/logs/") 
    end 


files = FileList.new("c:/temp/**/*") do |file| 
    file.exclude("c:/temp/logs") 
end 

    files = FileList.new("c:/temp/**/*") do |file| 
    file.exclude("c:/temp/logs/*.*") 
    end 


    files = FileList.new("c:/temp/**/*") do |file| 
    file.exclude("c:/temp/logs/**/*") 
    end 


    files = FileList.new("c:/temp/**/*") do |file| 
    file.exclude("c:/temp/**/logs/") 
    end 

versión rastrillo es 0.9.2.2 y la versión de Ruby es 193. todo esto no funciona. ¿Cómo debo excluir un directorio en una lista de archivos?

Respuesta

6

Estoy asumiendo que usted está tratando de obtener una lista de todos los archivos bajo c:/tmp excepto para nada en (e incluyendo) la carpeta c:/tmp/logs:

files = FileList.new("c:/temp/**/*").exclude(/c:\/temp\/logs/) 

[Editar] consulte la documentación de FileList#exclude para más detalles. Por ejemplo, para excluir múltiples directorios, puede agregar múltiples argumentos de cadena/expresión regular, modificar la expresión regular para que coincida con todos los patrones de directorio que se excluirán, o hacer algo similar en un bloque.

x1 = /c:\/temp\/logs/ # The entire "c:/temp/logs" folder. 
x2 = /\.zip$/i # Any file whose name ends with ".zip". 
FileList.new("c:/temp/**/*").exclude(x1, x2) 
+0

Funciona bien, ¿qué hay de excluir múltiples carpetas o archivos? – icn

+0

Debería poder encadenar excluye – PinnyM

+0

@icn: vea mi respuesta actualizada. – maerics

Cuestiones relacionadas