Zum Hauptinhalt springen

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.
Wenn Abgleichmuster eine Zeichenkette ist, wird ein Platzhaltermuster verwendet. Dabei werden nur die drei Platzhalter *, ? und [...] unterstützt.
Wenn Abgleichmuster eine 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
}