> 파일 및 디렉토리 관리 > basename

basename: 경로에서 파일명 추출 및 확장자 제거

basename 명령은 주어진 경로에서 디렉토리 부분을 제외한 순수한 파일명 또는 디렉토리명을 추출합니다. 특히, 파일명에서 특정 접미사(확장자)를 제거하는 데 유용하게 사용됩니다. 이는 셸 스크립트 작성 시 파일 경로를 처리할 때 핵심적인 역할을 합니다.

개요

basename은 파일 경로 문자열에서 마지막 슬래시(/) 이후의 문자열을 반환합니다. 이는 파일명이나 디렉토리명을 추출하는 데 사용되며, 선택적으로 지정된 접미사를 제거할 수 있습니다. `basename-x`라는 별도의 명령어는 존재하지 않으며, `basename` 명령어의 두 번째 인자인 SUFFIX를 통해 확장자 제거 기능을 수행합니다.

주요 기능

  • 파일 경로에서 파일명 추출
  • 지정된 접미사(확장자) 제거
  • 셸 스크립트에서 경로 처리 및 변수 할당

주요 기능 및 인자

basename은 대부분 인자를 통해 기능을 수행하며, `-x`와 같은 특정 옵션은 존재하지 않습니다. 대신, 두 번째 인자로 접미사를 지정하여 확장자를 제거할 수 있습니다.

기본 인자

생성된 명령어:

명령어를 조합해 보세요.

설명:

`basename` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

basename 명령의 다양한 활용 예시입니다.

기본 파일명 추출

basename /home/user/document.txt

주어진 경로에서 파일명만 추출합니다.

확장자 제거

basename /home/user/report.pdf .pdf

파일명에서 특정 확장자를 제거합니다. 두 번째 인자로 제거할 접미사를 지정합니다.

여러 확장자 제거

basename /home/user/archive.tar.gz .gz

.tar.gz와 같이 여러 확장자가 있는 경우, 지정된 접미사만 제거됩니다.

디렉토리 경로 처리

basename /home/user/documents/

경로가 디렉토리로 끝나는 경우, 마지막 디렉토리 이름을 반환합니다.

셸 변수와 함께 사용

FILE_PATH="/var/log/syslog.log"
BASENAME=$(basename "$FILE_PATH")
EXTENSION_REMOVED=$(basename "$FILE_PATH" ".log")
echo "원본 경로: $FILE_PATH"
echo "파일명: $BASENAME"
echo "확장자 제거: $EXTENSION_REMOVED"

셸 스크립트에서 변수에 저장된 경로를 처리할 때 유용합니다.

팁 & 주의사항

basename 사용 시 유의할 점과 활용 팁입니다.

  • 슬래시 처리: 경로의 마지막에 슬래시(/)가 있어도 basename은 이를 무시하고 마지막 디렉토리 이름을 반환합니다. 예: `basename /dir/` -> `dir`
  • 접미사 일치: 접미사는 NAME의 끝에 정확히 일치해야 제거됩니다. `basename file.txt .tx`는 `file.txt`를 반환합니다. 부분 일치는 적용되지 않습니다.
  • 여러 확장자: `.tar.gz`와 같은 여러 확장자를 제거하려면, 가장 바깥쪽 확장자부터 지정해야 합니다. `basename archive.tar.gz .gz`는 `archive.tar`를 반환합니다. `basename archive.tar.gz .tar.gz`는 `archive`를 반환합니다.
  • `-x` 옵션 부재: `basename` 명령어에는 `-x` 옵션이 존재하지 않습니다. 대신 두 번째 인자로 제거할 접미사를 직접 지정하여 확장자 제거 기능을 활용할 수 있습니다. 이는 `basename-x`라는 표현이 의도하는 바와 같습니다.

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.


동일 카테고리 명령어