`basename` 명령을 사용하여 파일 이름 읽기
`basename` 명령은 디렉토리 또는 파일 경로에서 확장자 없이 파일 이름을 읽는 데 사용됩니다.
통사론:
기본 이름이름[접미사]
또는
기본 이름옵션... 이름...
여기서 NAME은 파일 이름 또는 전체 경로가 있는 파일 이름을 포함할 수 있습니다. SUFFIX는 선택 사항이며 사용자가 제거하려는 파일 확장자 부분을 포함합니다. `basename` 명령에는 아래에 설명된 몇 가지 옵션이 있습니다.
옵션
이름 | 설명 |
-에게 | 경로가 있거나 없는 여러 파일 이름을 명령 인수로 전달하는 데 사용됩니다. |
-NS | 제거해야 하는 접미사로 확장자를 전달하는 데 사용됩니다. |
-와 함께 | 각 파일을 null로 구분하여 여러 파일 이름을 표시하는 데 사용됩니다. |
-돕다 | `basename` 명령어 사용 정보를 표시하기 위해 사용합니다. |
-버전 | 버전 정보를 표시하는 데 사용됩니다. |
예-1: NAME 및 SUFFIX 사용
다음 `basename` 명령은 확장자가 있는 파일 이름을 검색합니다. SUFFIX는 이 명령에서 생략됩니다. 여기서 출력은 '제품.txt' .
$기본 이름 /집/파미다/암호/제품.txt
확장자가 없는 파일 이름을 검색하려면 `basename` 명령을 사용하여 파일 확장자를 SUFFIX로 제공해야 합니다. 여기서 확장자는 .txt입니다. 다음 명령을 실행하여 파일에서 확장자를 제거합니다.
$기본 이름 /집/파미다/암호/제품.txt .txt
예-2: '-a' 옵션과 NAME 사용
이 예제에서는 `basename` 명령의 '-a' 옵션을 사용하는 방법을 보여줍니다. 여기에서 `basename` 명령을 사용하여 두 개의 파일 경로가 인수로 전달됩니다. 확장자가 있는 각 파일 이름은 경로에서 검색하고 개행으로 인쇄합니다.
$기본 이름 -에게 /집/파미다/index.html/집/파미다/암호/emp.txt
예-3: '-z' 옵션과 NAME 사용
'-z' 옵션은 `basename` 명령과 함께 사용되어 여러 파일 이름을 개행 대신 null 값으로 인쇄합니다. 다음 명령은 '-a'와 '-z'라는 두 가지 옵션을 함께 사용합니다. 여기에서 두 개의 파일 이름, index.html 그리고 emp.txt 공백이나 개행 없이 인쇄됩니다.
$기본 이름 -NS /집/파미다/index.html/집/파미다/암호/emp.txt
예-4: '-s' 옵션과 NAME 사용
다음 명령은 `basename`과 함께 SUFFIX 대신 사용할 수 있습니다. 파일에서 파일 확장자를 제거하려면 파일 확장자가 '-sh' 옵션과 함께 전달되어야 합니다. 다음 예는 'addition.sh' 파일에서 확장자 '-sh'를 제거합니다.
$기본 이름 -NS.sh 추가 .sh
예-5: SUFFIX 없이 파일 확장자 제거
파일 이름에서 제거하려는 파일의 확장자를 모르는 경우 이 예제가 문제를 해결하는 데 도움이 될 것입니다. 라는 이름의 파일 생성 read_file.sh 확장자의 파일 이름을 검색하려면 다음 코드를 사용하십시오. `sed` 명령은 이 예에서 파일 이름에서 모든 유형의 확장자를 제거하는 데 사용됩니다. 스크립트를 실행하면 ' 평균 ' 확장자를 제거한 후 ' 파이 '.
read_file.sh
#!/bin/bash# 경로로 파일 이름 설정
파일 이름='/home/fahmida/code/average.py'
# 'basname' 및 'sed' 명령을 사용하여 확장자 없이 파일 이름을 읽습니다.
던졌다 '$(기본 이름 '$ 파일 이름' | sed 's/(.*)..*/1/')'
스크립트를 실행합니다.
$세게 때리다read_file.sh
예-6: 파일 확장자를 txt에서 docx로 변환
확장자가 없는 파일 이름은 파일을 한 확장자에서 다른 확장자로 변환해야 합니다. 이 예제는 bash 스크립트에서 `basename` 명령을 사용하여 모든 텍스트 파일(.txt)의 확장자를 단어 파일(.docx)로 변경하는 방법을 보여줍니다. 라는 이름의 파일을 만들고, 변환 파일.sh 다음 코드로. 여기에서 for-in 루프는 다음을 사용하여 모든 텍스트 파일을 읽는 데 사용됩니다. .txt 현재 디렉토리의 확장자. 확장자가 없는 파일 이름은 `basename` 명령으로 읽고 루프의 각 반복에서 .docx 확장자를 추가하여 이름을 변경합니다.
변환 파일.sh
#!/bin/bash# 루프는 현재 디렉토리에서 각 텍스트 파일을 읽습니다.
~을위한파일 이름~에 ``엘 *.txt``
~하다
# 변환하기 전에 텍스트 파일 이름을 인쇄합니다.
던졌다 '변환 전 파일명 :$파일명'
# txt 파일의 확장자를 docx로 변경
뮤직비디오 - '$파일명' '$(기본 이름 -- '$파일 이름' .txt).docx '
완료
스크립트를 실행합니다.
$세게 때리다변환 파일.sh`ls` 명령을 사용하여 텍스트 파일이 변환되었는지 확인하십시오.
$엘
예-7: 셸 매개변수 확장을 사용하여 확장자 없이 파일 이름 읽기
쉘 매개변수 확장은 bash에서 확장자 없이 파일 이름을 읽는 또 다른 방법입니다. 이 예는 쉘 매개변수 확장의 사용을 보여줍니다. 다음 명령은 파일 경로 이름을 $ 파일 이름 .
$파일 이름='/var/usr/temp/myfile.tar.gz'다음 명령은 경로에서 모든 유형의 확장자를 제거하고 확장자가 없는 파일 경로를 변수에 저장합니다. $파일1 .
$파일1='${파일명%%.*}'다음 명령은 경로에서만 파일 이름을 인쇄합니다. 여기서 출력은 ' 마이파일 '.
$던졌다 '${파일1##*/}'파일 이름에 두 개의 점(.)이 있는 두 개의 확장자가 포함되어 있고 파일의 마지막 확장자를 제거하여 파일 이름을 읽으려면 다음 명령을 사용해야 합니다. 파일 경로를 변수에 저장하는 다음 명령을 실행합니다. $ 파일2 파일의 마지막 확장자를 제거하여
$파일2='${파일명%.*}'이제 다음 명령을 실행하여 하나의 점(.) 확장자를 가진 파일 이름을 인쇄하십시오. 여기서 출력은 myfile.tar.
$던졌다 '$ {파일2 ## * /}'
결론
다양한 용도로 확장자가 없는 파일 이름이 필요합니다. 확장자가 없는 파일 이름의 일부 사용은 파일 변환과 같은 몇 가지 예를 사용하여 이 자습서에서 설명합니다. 이 튜토리얼은 파일 경로에서 파일 이름과 확장자를 분리하는 방법을 배우는 데 관심이 있는 사용자를 도울 것입니다. 여기에는 두 가지 방법이 설명되어 있습니다. 사용자는 다음 방법 중 하나를 따라 파일 경로에서만 파일 이름을 추출할 수 있습니다.