Bash에서 파일 이름과 확장자를 분리하는 방법

Bash

소개:

Bash에서 파일 작업을 할 때 파일 이름과 확장자를 분리해야 하는 경우가 종종 있습니다. 일반적인 접근 방식은 `cut` 명령을 사용하지만 이 방법은 마침표가 여러 개 포함된 파일 이름으로 인해 실패할 수 있습니다.

예를 들어 `a.b.js`와 같은 파일 이름은 `a.b` 및 `js` 대신 `a`와 `b.js`로 잘못 분할됩니다. Python은 `os.path.splitext()`를 사용하여 쉬운 솔루션을 제공하지만 Python을 사용하는 것이 항상 가장 효율적인 옵션은 아닐 수도 있습니다. 이 문서에서는 Bash에서 이 작업을 수행하는 더 나은 방법을 살펴봅니다.

명령 설명
${variable%.*} 파일 이름에서 확장자를 제거하는 매개변수 확장입니다.
${variable##*.} 파일 이름에서 확장자를 추출하는 매개변수 확장입니다.
awk -F. 파일 이름을 분할하는 데 사용되는 마침표로 필드 구분 기호를 설정합니다.
OFS="." 확장자 없이 파일 이름을 재구성하는 데 사용되는 awk의 출력 필드 구분 기호입니다.
NF-- awk에서 필드 수를 하나씩 줄여 확장을 효과적으로 제거합니다.
${BASH_REMATCH} Bash의 정규식에서 일치하는 항목을 보유하는 배열입니다.
local variable Bash의 함수 내에서 로컬 범위를 사용하여 변수를 선언합니다.

Bash 솔루션의 세부 분석

제공된 스크립트는 Bash에서 파일 이름과 확장자를 분리하는 다양한 방법을 제공합니다. 첫 번째 스크립트는 Bash 매개변수 확장을 사용합니다. 변수 마지막 마침표부터 문자열 끝까지 모든 것을 제거하여 확장자를 제거합니다. 마지막 기간 이후의 모든 항목을 가져와 확장을 캡처합니다. 이 방법은 대부분의 파일 이름 구조에 대해 간단하고 효율적입니다. 두 번째 스크립트는 , Unix 계열 환경의 강력한 텍스트 처리 도구입니다. 다음을 사용하여 필드 구분 기호를 마침표로 설정 , 파일 이름을 여러 부분으로 나눌 수 있습니다. 출력 필드 구분 기호, , 다음을 사용하여 필드 수를 줄입니다. 확장자 없이 파일 이름을 재구성하는 기술입니다.

세 번째 스크립트는 Bash에서 정규식을 사용합니다. 정규식 일치에서 그룹을 캡처합니다. 이 스크립트는 파일 이름을 두 그룹(기본 이름용 그룹과 확장자용 그룹)으로 나누는 패턴을 사용합니다. 마지막으로, 사용자 정의 함수 스크립트는 함수 내에서 매개변수 확장 논리를 캡슐화하여 코드 재사용성과 가독성을 향상시킵니다. 그것은 사용한다 함수 내에서 변수 범위를 유지하도록 선언하여 더 큰 스크립트에서 의도하지 않은 부작용을 방지합니다. 각 방법은 Bash 스크립팅의 다양성과 강력함을 보여줌으로써 동일한 문제를 해결하는 서로 다른 접근 방식을 보여줍니다.

Bash에서 매개변수 확장 사용

배쉬 스크립팅

#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Awk를 사용하여 파일 이름과 확장자를 분리

Awk로 배쉬

#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Bash에서 정규식 사용

정규식을 사용한 Bash 스크립팅

#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Bash에서 사용자 정의 함수 사용

사용자 정의 기능을 사용한 Bash 스크립팅

Bash에서 파일 조작을 위한 대체 방법 탐색

이미 논의한 방법 외에도 Bash에는 파일 이름과 확장자를 조작하기 위한 다른 유용한 기술이 있습니다. 그러한 방법 중 하나는 그리고 명령. 경로에서 파일 이름을 추출하는 데 사용할 수 있습니다. dirname 디렉토리 경로를 검색합니다. 이러한 명령을 매개변수 확장과 결합하면 파일 이름과 확장자를 효과적으로 분리할 수 있습니다. 예를 들어 파일 이름에서 확장자를 제거합니다. 이 접근 방식은 파일 이름뿐 아니라 전체 파일 경로로 작업할 때 특히 유용합니다.

또 다른 방법은 다음을 사용하는 것입니다. , 텍스트 필터링 및 변환을 위한 강력한 스트림 편집기입니다. 적절한 정규식을 작성하여 파일 이름과 확장자를 분리할 수 있습니다. 예를 들어 다음 명령은 파일 이름과 확장자를 분할하여 별도의 캡처 그룹에 배치합니다. 이 기술은 유연하며 복잡한 파일 이름 구조를 처리할 수 있습니다. 이러한 추가 도구와 방법을 탐색하면 Bash에서 파일 데이터를 조작하는 능력이 확장되어 다양한 스크립팅 시나리오에 대한 강력한 솔루션을 제공할 수 있습니다.

Bash 파일 조작에 대해 자주 묻는 질문

  1. 의 목적은 무엇입니까? 명령?
  2. 마지막 마침표 이후의 모든 항목을 제거하여 파일 이름에서 확장자를 제거합니다.
  3. 어떻게 명령 작업?
  4. 파일 이름의 마지막 마침표 이후의 모든 항목을 가져와 확장자를 추출합니다.
  5. 무엇을 제공된 스크립트에서 수행합니까?
  6. 필드 구분 기호를 마침표로 설정하여 파일 이름을 여러 부분으로 나눌 수 있습니다.
  7. 왜 사용합니까? 에 스크립트?
  8. 필드 수를 하나씩 줄여 파일 이름에서 확장자를 효과적으로 제거합니다.
  9. 파일 이름과 확장자를 추출하는 데 정규 표현식이 어떻게 도움이 됩니까?
  10. 패턴 일치 및 그룹화를 허용하여 파일 이름의 여러 부분을 분리할 수 있습니다.
  11. Bash에서 사용자 정의 함수를 사용하면 어떤 이점이 있나요?
  12. 사용자 정의 기능은 코드 재사용성과 가독성을 향상시켜 스크립트를 더욱 모듈화합니다.
  13. 어떻게 파일 이름에 대한 도움이 필요하세요?
  14. 전체 파일 경로에서 파일 이름을 추출하고 선택적으로 확장자를 제거합니다.
  15. 할 수 있다 파일 이름 조작에 사용됩니까?
  16. 예, 정규식을 사용하여 파일 이름의 일부를 변환하고 격리할 수 있습니다.

파일 이름 및 확장자 추출 솔루션 마무리

결론적으로, Bash에서 파일 이름과 확장자를 추출하는 것은 각기 다른 요구와 선호도에 적합한 다양한 방법을 통해 효과적으로 달성할 수 있습니다. 매개변수 확장, awk, sed 또는 사용자 정의 기능을 사용하든 이러한 기술은 유연하고 효율적인 솔루션을 제공합니다. 이러한 명령을 이해하고 활용하면 스크립트가 여러 마침표 및 기타 복잡한 파일 이름을 오류 없이 처리할 수 있습니다.