Aller au contenu principal

Rechercher un fichier ou un répertoire (file.find)

Déclaration

liste de fichiers = file.find(mode de correspondance)

Paramètres

  • mode de correspondance
    Type table | chaîne

Valeur de retour

  • liste de fichiers
    Type table, renvoie la liste des noms de fichiers trouvés

Description

Recherche des fichiers ou répertoires avec un motif générique ou une correspondance exacte Lua, puis renvoie la liste des noms correspondants.
Si le mode de correspondance est une chaîne, utilise un motif générique ; ce motif prend uniquement en charge les trois caractères génériques *, ? et [...].
Si le mode de correspondance est une table, utilise une correspondance exacte Lua.
Cette fonction est disponible dans les versions postérieures à 20250416

Exemple

Motif générique simple

-- Motif générique simple, prenant uniquement en charge * ? [...]
-- * représente n’importe quelle longueur de caractères, y compris une longueur nulle
-- ? représente un seul caractère quelconque
-- [...] représente un caractère quelconque entre crochets ; par exemple [abc]haha.txt correspond à ahaha.txt, bhaha.txt et chaha.txt
-- [!...] représente un caractère qui n’est pas entre crochets ; par exemple [!abc]haha.txt ne correspond pas à ahaha.txt, bhaha.txt ou chaha.txt, mais correspond à un seul autre caractère comme xhaha.txt
local results = file.find("/private/var/mobile/Containers/Shared/AppGroup/*/Library/Preferences/*.plist")

Motif générique exact

-- Motif de correspondance exacte Lua
-- La correspondance exacte construit le motif par segments d’une table Lua ; les chaînes sont comparées littéralement et une fonction renvoyant vrai ou faux peut déterminer si chaque segment est valide
local results = file.find{ --<--- Remarque : il s’agit d’accolades
"/private/var/mobile/Containers/Shared/AppGroup/", -- Une chaîne ordinaire ne nécessite pas de motif
function(s) return s:match("^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$") end, -- Utilise une fonction pour faire correspondre le segment courant
"/Library/Preferences/",
function(s) return s:match("%.plist$") end, -- Utilise une fonction pour faire correspondre le segment courant
}
-- Le motif de correspondance exacte Lua peut également entourer une seule chaîne d’accolades pour construire une fonction de correspondance simplifiée
local results = file.find{ --<--- Remarque : il s’agit d’accolades
"/private/var/mobile/Containers/Shared/AppGroup/", -- Une chaîne ordinaire ne nécessite pas de motif
{"^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$"}, -- Entoure une chaîne seule d’une table pour indiquer qu’il s’agit d’un segment utilisant un motif
"/Library/Preferences/", -- Une chaîne ordinaire ne nécessite pas de motif
{"%.plist$"}, -- Entoure une chaîne d’une table pour indiquer qu’il s’agit d’un segment utilisant un motif
}