파일 또는 디렉터리 찾기 (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$"}, -- 단일 문자열을 테이블로 감싸 패턴 일치를 적용할 세그먼트임을 표시
}