Datei oder Verzeichnis suchen (file.find)
Deklaration
dateiliste = file.find(Abgleichmuster)
Parameter
- Abgleichmuster
Tabelle oder Text
Rückgabewert
- Dateiliste
Tabelle; gibt die Liste der gefundenen Dateinamen zurück
Beschreibung
Sucht Dateien oder Verzeichnisse mit einem Platzhaltermuster oder einem exakten Lua-Abgleich und gibt die Liste der passenden Dateinamen zurück.
WennAbgleichmustereine Zeichenkette ist, wird ein Platzhaltermuster verwendet. Dabei werden nur die drei Platzhalter *, ? und [...] unterstützt.
WennAbgleichmustereine Tabelle ist, wird ein exakter Lua-Abgleich verwendet.
Erst in Versionen nach 20250416 verfügbar
Beispiel
Einfaches Platzhaltermuster
-- Einfaches Platzhaltermuster; unterstützt nur die drei grundlegenden Platzhalter * ? [...]
-- * steht für eine beliebig lange Zeichenfolge (auch Länge 0)
-- ? steht für ein beliebiges einzelnes Zeichen
-- [...] steht für ein beliebiges einzelnes Zeichen in den eckigen Klammern; [abc]haha.txt passt beispielsweise zu ahaha.txt, bhaha.txt und chaha.txt
-- [!...] steht für ein einzelnes Zeichen, das nicht in den eckigen Klammern steht; [!abc]haha.txt passt beispielsweise nicht zu ahaha.txt, bhaha.txt oder chaha.txt, sondern etwa zu xhaha.txt
local results = file.find("/private/var/mobile/Containers/Shared/AppGroup/*/Library/Preferences/*.plist")
Exaktes Platzhaltermuster
-- Exaktes Lua-Muster
-- Der exakte Abgleich erstellt das Muster aus Segmenten einer Lua-Tabelle. Zeichenketten werden wörtlich verglichen; Muster können eine Funktion verwenden, die bestimmt, ob das aktuelle Segment gültig ist.
local results = file.find{ --<--- Beachte die geschweiften Klammern
"/private/var/mobile/Containers/Shared/AppGroup/", -- Eine normale Zeichenkette benötigt keinen Musterabgleich
function(s) return s:match("^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$") end, -- Aktuelles Segment mit einer Funktion abgleichen
"/Library/Preferences/",
function(s) return s:match("%.plist$") end, -- Aktuelles Segment mit einer Funktion abgleichen
}
-- Ein exaktes Lua-Muster kann auch eine einzelne Zeichenkette in geschweiften Klammern verwenden, um eine einfache Musterabgleichfunktion zu erstellen.
local results = file.find{ --<--- Beachte die geschweiften Klammern
"/private/var/mobile/Containers/Shared/AppGroup/", -- Eine normale Zeichenkette benötigt keinen Musterabgleich
{"^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$"}, -- Eine einzelne Zeichenkette in einer Tabelle kennzeichnet ein Segment mit Musterabgleich
"/Library/Preferences/", -- Eine normale Zeichenkette benötigt keinen Musterabgleich
{"%.plist$"}, -- Eine einzelne Zeichenkette in einer Tabelle kennzeichnet ein Segment mit Musterabgleich
}