개요
리눅스 환경에서 파일 경로를 다룰 때 전체 경로에서 파일 이름이나 확장자만 깔끔하게 분리해야 하는 상황이 자주 발생합니다. 본 글에서는 기본 유틸리티인 basename 명령어의 핵심 동작 원리와 옵션, 그리고 실무 쉘 스크립트에서 자동화 작업에 활용하는 실전 예제를 단계별로 소개합니다.
1. basename 기본 개념과 전체 경로에서 파일명만 추출하기
실습을 진행할 테스트 디렉터리와 샘플 로그 파일을 생성하기 위해 mkdir -p /tmp/basename_demo/logs && touch /tmp/basename_demo/logs/app_service.log 명령어를 실행합니다.

basename 명령어는 지정한 전체 경로에서 앞쪽 디렉터리 경로를 모두 제거하고 마지막 파일명만 추출하여 출력합니다.
절대 경로나 상대 경로에 관계없이 파일의 순수 이름만 분리해 낼 때 유용하게 활용할 수 있습니다.
⚙️ [주요 옵션]
-a (--multiple) : 여러 개의 경로 인자를 한 번에 전달받아 각 경로의 파일명을 순서대로 출력합니다.-s (--suffix=SUFFIX) : 파일명 뒤에 붙은 특정 확장자나 접미사를 함께 제거하여 출력합니다.-z (--zero) : 출력 결과의 각 항목 끝을 개행(줄바꿈) 대신 널(NUL) 문자로 구분합니다.--help : 사용 가능한 도움말 정보를 표시하고 종료합니다.--version : 프로그램의 버전 정보를 표시하고 종료합니다.

경로 끝에 슬래시(/)가 포함된 디렉터리 경로를 전달하더라도 basename은 마지막 슬래시를 무시하고 최하위 디렉터리 이름만 정확하게 추출합니다.
이를 통해 파일뿐만 아니라 디렉터리 경로에서 대상 폴더명만 간편하게 분리할 수 있습니다.

2. 확장자(Suffix) 제거를 통한 순수 파일 이름 분리
basename 명령어의 두 번째 인자로 확장자나 제거할 접미사(.log)를 전달하면, 전체 경로에서 디렉터리 경로뿐만 아니라 해당 확장자까지 함께 제거된 순수 파일 이름만 추출합니다.
이를 통해 로그 파일이나 데이터 파일의 확장자를 제외한 고유 식별자 이름만 손쉽게 분리할 수 있습니다.

-s 옵션을 사용하면 제거할 접미사(.log)를 명시적으로 지정하여 동일하게 확장자가 제거된 파일명을 얻을 수 있습니다.
옵션 형태로 접미사를 지정하므로 대상 파일 경로를 보다 직관적으로 구분하여 전달할 수 있습니다.

3. -a 옵션을 활용한 여러 파일 경로 일괄 처리
여러 파일 경로를 일괄 처리하는 실습을 진행하기 위해 touch /tmp/basename_demo/logs/error.log /tmp/basename_demo/logs/access.log 명령어로 추가 샘플 로그 파일들을 생성합니다.

-a 옵션을 사용하면 여러 개의 파일 경로를 인자로 한 번에 전달하여 각 경로의 파일명만 순서대로 추출할 수 있습니다.
반복문 없이도 단일 명령어로 다수의 전체 경로에서 파일 이름만 빠르게 분리해 냅니다.

-a 옵션과 -s 옵션을 함께 사용하고 와일드카드(*)를 지정하면, 디렉터리 내 대상 파일들의 전체 경로와 특정 확장자(.log)를 동시에 제거하여 순수 파일명만 일괄 출력할 수 있습니다.
대량의 파일 목록에서 접미사를 한꺼번에 정리하고 고유 식별자만 추출할 때 매우 유용합니다.

4. 실무 쉘 스크립트 연동: 백업 아카이브 및 파일명 일괄 변경
for 반복문과 basename 명령어를 결합하면 디렉터리 내의 여러 파일을 순회하면서 확장자(.log)를 제거한 순수 파일명을 변수에 할당할 수 있습니다.
이를 날짜 형식(date +%Y%m%d)과 조합하여 규칙적인 백업 아카이브 파일명을 동적으로 생성하는 스크립트 작성에 활용할 수 있습니다.
![for file in /tmp/basename_demo/logs/*.log; do name=$(basename “$file” .log); echo “[BACKUP] $file -> backup_${name}_$(date +%Y%m%d).tar.gz”; done](/ubuntu/20261013_014253_55/captures/s04_c01_for_file_in__tmp_basename_demo_logs___log__do_name.png)
실습이 끝난 후 테스트 환경을 정리하기 위해 생성했던 데모 디렉터리와 샘플 파일들을 rm -rf /tmp/basename_demo 명령어로 삭제합니다.

지금까지 리눅스 basename 명령어의 기본 사용법부터 경로 파싱 및 쉘 스크립트 실무 활용법까지 간단하게 정리해보았습니다.
알려드린 핵심 옵션과 예시를 참고하여 자동화 스크립트 작성 시 파일명과 확장자를 더욱 효율적으로 다뤄보세요.