SW/리눅스

Linux : Basename 명령어, 예제, 사용 방법

얇은생각 2023. 1. 2. 07:30
반응형

기본 이름은 지정된 파일 이름에서 디렉터리 및 후행 접미사를 제거하는 명령줄 유틸리티입니다.

 

 

Linux : Basename 명령어, 예제, 사용 방법

 

 

basename 명령을 사용

basename 명령은 다음 두 가지 구문 형식을 지원합니다.

basename NAME [SUFFIX]
basename OPTION... NAME...

 

 

기본 이름은 파일 이름을 사용하고 파일 이름의 마지막 구성 요소를 인쇄합니다. 선택적으로 후행 접미사를 제거할 수도 있습니다. 이 명령은 몇 가지 옵션만 허용하는 간단한 명령입니다.

가장 기본적인 예는 선행 디렉터리를 제거한 상태에서 파일 이름을 인쇄하는 것입니다.

basename /etc/passwd

# passwd

 

 

basename 명령은 다음과 같은 모든 후행 / 문자를 제거합니다.

basename /usr/local/
basename /usr/local

# local
# local

 

 

 

두 명령 모두 동일한 출력을 생성합니다.

기본적으로 각 출력 라인은 새 줄 문자로 끝납니다. NUL로 줄을 끝내려면 -z(--0) 옵션을 사용합니다.

 

 

 

다양한 인수

basename 명령은 여러 이름을 인수로 사용할 수 있습니다. 이렇게 하려면 -a(--multiple) 옵션을 사용하여 명령을 호출한 다음 공백으로 구분된 파일 목록을 호출합니다.

예를 들어 /etc/passwd /etc/shadow의 파일 이름을 가져오려면 다음을 실행합니다.

basename -a /etc/passwd /etc/shadow # passwd # shadow

 

 

 

후행 접미사를 제거

파일 이름에서 후행 접미사를 제거하려면 접미사를 두 번째 인수로 전달합니다.

basename /etc/hostname name

# host

 

 

일반적으로 이 기능은 파일 확장명을 제거하는 데 사용됩니다.

basename /etc/sysctl.conf .conf

# sysctl

 

 

후행 접미사를 제거하는 또 다른 방법은 접미사를 -s(--suffix=CJ) 옵션으로 지정하는 것입니다.

basename -s .conf /etc/sysctl.conf

# sysctl

 

 

이 구문 양식을 사용하면 여러 이름에서 후행 접미사를 제거할 수 있습니다.

basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf

# sysctl
# sudo

 

 

 

다음은 bash for 루프에서 basename 명령을 사용하여 파일 확장자를 ".jpeg"에서 ".jpg"로 대체하여 현재 디렉터리에서 ".jpeg"로 끝나는 모든 파일의 이름을 변경하는 예를 보여 줍니다.

for file in *.jpeg; do
    mv -- "$file" "$(basename $file .jpeg).jpg"
done

 

 

기본 이름을 호출하는 대신 bash를 셸로 사용하는 경우 셸 매개 변수 확장을 사용하여 후행 확장자를 제거할 수 있습니다.

기본 이름 명령은 이름에서 선행 디렉터리 및 후행 접미사를 제거합니다.

반응형