查找檔案或目錄 (file.find)
聲明
檔案清單 = file.find(匹配模式)
參數
- 匹配模式
表型 | 文字型
回傳值
- 檔案清單
表型,返回找到的檔名清單
說明
使用通配符模式或 Lua 精確匹配搜尋檔案或目錄,返回匹配的檔名清單。
如果匹配模式是字串,則使用通配符模式匹配,通配符模式匹配僅支援 *、?、[...] 這三種通配符。
如果匹配模式是表,則使用 Lua 精確匹配。
該函式在 20250416 以後的版本方可使用
範例
簡單通配符模式
-- 簡單通配符模式,僅支持 * ? [...] 三種基本通配符
-- * 表示匹配任意長度任意字符(長度也可以是 0)
-- ? 表示匹配單個任意字符
-- [...] 表示匹配單個中括號里的任意字符,例如 [abc]haha.txt 表示 ahaha.txt bhaha.txt chaha.txt 都匹配
-- [!...] 表示匹配單個非中括號里的任意字符,例如 [!abc]haha.txt 表示 ahaha.txt bhaha.txt chaha.txt 不匹配,其它單個字符例如 xhaha.txt 才能匹配
local results = file.find("/private/var/mobile/Containers/Shared/AppGroup/*/Library/Preferences/*.plist")
精確通配模式
-- 精確 Lua 模式匹配模式
-- 精確匹配使用 Lua 表分段構造匹配模式,字符串為字面量判斷,模式匹配可以使用返回真假的函數來決定當前分段是否有效
local results = file.find{ --<--- 注意這裡是大括號
"/private/var/mobile/Containers/Shared/AppGroup/", -- 普通字符串不需要模式匹配
function(s) return s:match("^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$") end, -- 使用函數匹配當前分段
"/Library/Preferences/",
function(s) return s:match("%.plist$") end, -- 使用函數匹配當前分段
}
-- 精確 Lua 模式匹配模式也可使用大括號包裹單個字符串以構造一個簡易模式匹配函數
local results = file.find{ --<--- 注意這裡是大括號
"/private/var/mobile/Containers/Shared/AppGroup/", -- 普通字符串不需要模式匹配
{"^[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+%-[A-F0-9]+$"}, -- 使用表包裹單個字符串表示這是一個需要使用模式匹配的分段
"/Library/Preferences/", -- 普通字符串不需要模式匹配
{"%.plist$"}, -- 使用表包裹單個字符串表示這是一個需要使用模式匹配的分段
}