본문 바로가기

파일/디렉토리 경로와 관련된 Emacs Lisp 함수들

기술적인 이야기/이맥스 2020. 3. 23.
반응형

파일 경로나 디렉터리 경로를 다루는 Emacs Lisp 함수 몇 가지를 정리합니다.

완벽한(?) 경로 구하기

(expand-file-name "~/.emacs.d")

;; => "/Users/seorenn/.emacs.d"

UNIX에서 홈 디렉터리($HOME)를 축약해서 표시하는 문자인 ~(Tilde, 물결 혹은 지렁이 무늬)를 원래 경로로 치환하는 데 주로 사용합니다.

와일드카드를 이용해 특정 경로의 파일 목록 구하기

(file-expand-wildcards "~/.emacs.d/*.el")

;; => ("~/.emacs.d/early-init.el" 
       "~/.emacs.d/init.el"
       "~/.emacs.d/init.example.el")

배치 작업을 위해 파일 목록을 구할 때 편하게 사용할 수 있습니다.

경로에서 파일 이름만 구하기

(file-name-nondirectory "/foo/bar/sample.txt")

;; => "sample.txt"

경로에서 디렉터리 이름만 구하기

(file-name-directory "/foo/bar/sample.txt")

;; => "/foo/bar/"

파일 이름에서 확장자 제거하기

(file-name-sans-extension "sample.txt")

;; => "sample"

참고로 . 단위로 떼어내기 때문에 sample.txt.old 같은 식으로 여러 확장자가 붙어 있으면 마지막 것만 떼어냅니다.

디렉터리 경로 명확히 하기

(file-name-as-directory "/foo/bar")

;; => "/foo/bar/"

끝에 /가 붙었다는 것에 차이가 있습니다. 여기 뒤에 파일 이름만 붙이면 완벽한 파일 경로가 되겠네요.

상대 경로 구하기

(file-relative-name "/foo/bar/sample.txt" "/foo")

;; => "bar/sample.txt"

첫 인자의 경로를 두 번째 인자의 디렉터리에서 액세스 할 수 있는 상대 경로를 돌려줍니다.

728x90
반응형

댓글