명령어/Linux

[리눅스] basename dirname 경로에서 파일명과 디렉토리 분리

jykim23 2026. 7. 14. 12:05
반응형

부제: 경로에서 파일명만, 또는 상위 디렉토리만 떼어내기

basename /var/log/syslog       # syslog
basename /a/photo.tar.gz .gz   # photo.tar (접미사 제거)
dirname /var/log/syslog        # /var/log
$ basename /var/log/syslog
syslog
$ dirname /var/log/syslog
/var/log

basename은 경로에서 마지막 파일명만, dirname은 그 앞의 디렉토리 경로만 남긴다.
rev+cut 트릭 없이 경로를 안전하게 쪼갤 수 있다.
스크립트에서 파일명·확장자·상위 폴더를 다룰 때 쓰는 표준 도구다.

이렇게도 쓴다

확장자를 떼어 파일 이름만 얻는다.

basename photo.jpg .jpg

 

find 결과에서 파일명만 뽑는다(xargs 조합).

find . -name '*.log' | xargs -n1 basename

 

스크립트가 자기 위치로 이동한다.

cd "$(dirname "$0")"

 

여러 경로의 파일명을 한 번에 뽑는다(-a).

basename -a /a/x.txt /b/y.txt
반응형