basename — 경로에서 파일 이름 추출
Linux / 파일 및 디스크 관리 / basename.html
경로의 마지막 요소만 남기고 선택적으로 확장자를 제거합니다.
기본 정보
| 명령어 이름 | basename |
|---|---|
| 한 줄 소개 | 경로의 마지막 요소만 남기고 선택적으로 확장자를 제거합니다. |
| 제공 | GNU coreutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/basename.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 파일·디스크 관리 (태그: 경로, 파일명, 스크립트) |
이 명령어는 무엇인가?
basename은 경로에서 파일 이름만 추출합니다. 두 번째 인자를 주면 그 접미사까지 제거합니다.
확장자를 떼고 다른 확장자를 붙이거나, 파일 이름을 로그 메시지에 넣을 때 유용합니다.
어떤 문제를 해결하는가?
- 파일 경로에서 이름만 필요할 때
- 확장자를 바꿔 다른 형식으로 저장할 때
- 로그나 메시지에 파일 이름을 넣을 때
- 반복문에서 대상 이름을 뽑아낼 때
주요 기능
파일 이름 추출
경로의 마지막 요소만 출력합니다.
- 활용 상황: 경로에서 이름만 쓸 때
- 얻는 결과: 확장자를 포함한 파일 이름
- 제한 사항: 디렉토리 경로를 주면 디렉토리 이름이 나옵니다.
확장자 제거
두 번째 인자로 접미사를 제거합니다.
- 활용 상황: 이름만으로 다른 파일을 만들 때
- 얻는 결과: 접미사가 빠진 이름
- 제한 사항: 정확히 일치하는 접미사만 제거합니다.
여러 인자 처리
-a 옵션으로 여러 경로를 처리합니다.
- 활용 상황: 일괄 변환 스크립트에서
- 얻는 결과: 경로별 파일 이름
- 제한 사항: -a는 GNU 확장이라 다른 유닉스에서 없을 수 있습니다.
설치 및 실행
설치 여부 확인
basename --version
sudo apt install coreutils # Debian/Ubuntu sudo dnf install coreutils # Fedora
실제 사용 예제
파일 이름 추출
경로에서 파일 이름만 얻습니다.
basename /var/log/nginx/access.log
확장자 교체
이름만 남긴 뒤 새 확장자를 붙입니다.
name=$(basename report.csv .csv)
echo "$name.md"
여러 경로 처리
두 경로의 이름을 각각 출력합니다.
basename -a /etc/hosts /etc/fstab