Saltar al contenido principal

Buscar archivos o directorios (file.find)

Declaración

lista_de_archivos = file.find(patrón_de_coincidencia)

Parámetros

  • patrón de coincidencia
    Tipo tabla | Tipo texto

Valores devueltos

  • lista de archivos
    Tipo tabla; devuelve la lista de nombres de archivo encontrados

Descripción

Busca archivos o directorios mediante un patrón comodín o una coincidencia exacta de Lua y devuelve la lista de nombres de archivo coincidentes.
Si patrón de coincidencia es una cadena, se usa la coincidencia por comodines, que solo admite estos tres comodines: *, ? y [...].
Si patrón de coincidencia es una tabla, se usa la coincidencia exacta de Lua.
Esta función solo está disponible a partir de la versión 20250416

Ejemplos

Patrón de comodines simple

-- Patrón de comodines simple; solo admite los tres comodines básicos: * ? [...]
-- * coincide con cualquier cantidad de caracteres (también puede ser 0)
-- ? coincide con un único carácter cualquiera
-- [...] coincide con un único carácter incluido entre corchetes; por ejemplo, [abc]haha.txt coincide con ahaha.txt, bhaha.txt y chaha.txt
-- [!...] coincide con un único carácter que no esté entre corchetes; por ejemplo, [!abc]haha.txt no coincide con ahaha.txt, bhaha.txt ni chaha.txt, pero sí con un carácter como xhaha.txt
local results = file.find("/private/var/mobile/Containers/Shared/AppGroup/*/Library/Preferences/*.plist")

Patrón de coincidencia exacta

-- Patrón de coincidencia exacta de Lua
-- La coincidencia exacta construye el patrón mediante segmentos de una tabla Lua; las cadenas se comparan como literales y una función que devuelve true o false puede decidir si el segmento actual es válido
local results = file.find{ --<--- observa que aquí se usan llaves
"/private/var/mobile/Containers/Shared/AppGroup/", -- Las cadenas normales no necesitan coincidencia de patrones
function(s) return s:match("^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$") end, -- Usa una función para coincidir con el segmento actual
"/Library/Preferences/",
function(s) return s:match("%.plist$") end, -- Usa una función para coincidir con el segmento actual
}
-- El patrón exacto de Lua también puede envolver una cadena individual entre llaves para construir una función de coincidencia sencilla
local results = file.find{ --<--- observa que aquí se usan llaves
"/private/var/mobile/Containers/Shared/AppGroup/", -- Las cadenas normales no necesitan coincidencia de patrones
{"^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$"}, -- Envolver una cadena individual en una tabla indica un segmento que usa coincidencia de patrones
"/Library/Preferences/", -- Las cadenas normales no necesitan coincidencia de patrones
{"%.plist$"}, -- Envolver una cadena individual en una tabla indica un segmento que usa coincidencia de patrones
}