본문 바로가기

리눅스

리눅스 basename 명령어 사용법 정리

728x90
반응형

리눅스 basename 명령어 사용법 정리

리눅스 basename 명령어는 파일 경로에서 디렉토리 경로를 제외하고 파일 이름(또는 파일명과 확장자)만 추출할 때 사용하는 유용한 명령어입니다.

1. 기본 문법 및 사용법

basename [경로/파일이름] [확장자]

 

파일 이름만 추출하기

  • 경로가 포함된 파일 전체 경로에서 파일명만 깔끔하게 가져옵니다.
basename /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0

 

특정 확장자 제거하고 출력하기 (-s 옵션 또는 뒤에 확장자 지정)

  • 파일명 뒤에 붙은 특정 확장자를 떼어내고 순수 파일 이름만 얻을 수 있습니다.
basename -s .conf /etc/nginx/nginx.conf
nginx

2. 실무 활용 예시

여러 파일의 확장자를 한 번에 떼어내고 싶을 때 (-a)

basename -a -s .log /var/log/syslog /var/log/auth.log
syslog
auth
728x90

반복문(For Loop)에서 파일 이름만 활용할 때

  • 디렉토리 내의 모든 설정 파일에서 경로를 떼고 파일명만 처리할 때 유용합니다.
for file in /etc/systemd/system/*.service; do
    echo $(basename "$file")
done

 

파일 시스템의 와일드카드(*.conf)를 직접 활용하면 ls 명령어나 복잡한 파이프 없이도 가장 깔끔하게 파일명만 추출

basename -s .conf *.conf

 

파이프라인 구조를 유지하고 싶을 때 (ls -1 + sed)

  • 만약 기존처럼 파이프 형태를 유지하고 싶다면 상세 정보가 나오는 ls -l 대신 파일명만 한 줄씩 출력하는 ls -1을 사용하고 sed로 확장자를 제거하는 것이 훨씬 간결합니다.
ls -1 *.conf | sed 's/\.conf$//'

 

단일 awk로 합치기 (ls -1 + 단일 awk)

  • 기존에 쓰시던 awk 방식을 유지하되 두 번 쓸 필요 없이 하나로 통합할 수 있습니다.
ls -1 *.conf | awk '{sub(/\.conf$/, ""); print}'

 

728x90
반응형