Archivo de lista Ruby en carpeta

Stewart Nguyen 21 junio 2023
  1. Crear una carpeta de muestra
  2. Use Dir::[] para listar todos los archivos en una carpeta
  3. Use Dir.glob para enumerar todos los archivos en una carpeta
Archivo de lista Ruby en carpeta

Este artículo presentará diferentes formas de enumerar todos los archivos en una carpeta particular en Ruby.

Crear una carpeta de muestra

Utilice estas líneas de comando para crear una estructura de carpetas en su directorio actual.

mkdir parent_folder
touch parent_folder/music_1.txt
touch parent_folder/music_2.txt

mkdir parent_folder/child_folder
touch parent_folder/child_folder/doc_1.txt
touch parent_folder/child_folder/doc_2.txt

Use Dir::[] para listar todos los archivos en una carpeta

Utilice Dir[<ruta_a_la_carpeta>/*], devuelve una matriz que contiene todos los nombres de archivos y carpetas dentro de ruta_a_la_carpeta.

Después, usaremos el File.file? método para seleccionar los nombres de archivo del resultado.

Ejemplo:

files = Dir['parent_folder/*'].select { |path| File.file?(path) }
puts files

Producción :

parent_folder/music_1.txt
parent_folder/music_2.txt

Para listar archivos recursivamente dentro de una subcarpeta, podemos aplicar este patrón:

files = Dir['parent_folder/**/*'].select { |path| File.file?(path) }
puts files

Producción :

parent_folder/music_1.txt
parent_folder/music_2.txt
parent_folder/child_folder/doc_2.txt
parent_folder/child_folder/doc_1.txt

Use Dir.glob para enumerar todos los archivos en una carpeta

Llamar a Dir.glob es equivalente a llamar a Dir[<ruta_a_la_carpeta>].

Ejemplo:

files = Dir.glob('parent_folder/**/*').select { |path| File.file?(path) }
puts files

Producción :

parent_folder/music_1.txt
parent_folder/music_2.txt
parent_folder/child_folder/doc_2.txt
parent_folder/child_folder/doc_1.txt

Artículo relacionado - Ruby File