Localizar um arquivo ou diretório (file.find)
Declaração
lista_de_arquivos = file.find(padrão_de_correspondência)
Parâmetros
- padrão de correspondência
Tabela | texto.
Valor retornado
- lista de arquivos
Tabela; retorna a lista de nomes de arquivos encontrados.
Observações
Pesquisa arquivos ou diretórios usando um padrão curinga ou uma correspondência exata Lua e retorna a lista de nomes correspondentes.
Sepadrão de correspondênciafor uma string, usa correspondência por curingas; esse modo aceita somente os três curingas *, ? e [...].
Sepadrão de correspondênciafor uma tabela, usa correspondência exata Lua.
Disponível somente em versões posteriores a 20250416.
Exemplo
Padrão curinga simples
-- padrão curinga simples; aceita somente os três curingas básicos * ? [...]
-- * corresponde a qualquer quantidade de caracteres (inclusive 0)
-- ? corresponde a um único caractere qualquer
-- [...] corresponde a um único caractere dentro dos colchetes; por exemplo, [abc]haha.txt corresponde a ahaha.txt, bhaha.txt e chaha.txt
-- [!...] corresponde a um único caractere que não esteja nos colchetes; por exemplo, [!abc]haha.txt não corresponde a ahaha.txt, bhaha.txt nem chaha.txt, mas corresponde a um único caractere diferente, como xhaha.txt
local results = file.find("/private/var/mobile/Containers/Shared/AppGroup/*/Library/Preferences/*.plist")
Padrão curinga exato
-- padrão de correspondência exata Lua
-- a correspondência exata constrói o padrão em segmentos de uma tabela Lua; strings são comparadas literalmente, e uma função que retorna true ou false pode decidir se o segmento atual é válido
local results = file.find{ --<--- observe que aqui são chaves
"/private/var/mobile/Containers/Shared/AppGroup/", -- uma string comum não precisa de correspondência por padrão
function(s) return s:match("^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$") end, -- usa uma função para corresponder ao segmento atual
"/Library/Preferences/",
function(s) return s:match("%.plist$") end, -- usa uma função para corresponder ao segmento atual
}
-- o padrão exato Lua também pode envolver uma única string em chaves para construir uma função de correspondência simples
local results = file.find{ --<--- observe que aqui são chaves
"/private/var/mobile/Containers/Shared/AppGroup/", -- uma string comum não precisa de correspondência por padrão
{"^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$"}, -- envolver uma string em uma tabela indica um segmento que usa correspondência por padrão
"/Library/Preferences/", -- uma string comum não precisa de correspondência por padrão
{"%.plist$"}, -- envolver uma string em uma tabela indica um segmento que usa correspondência por padrão
}