스택큐힙리스트

Bash에서 파일 이름과 확장자 추출하기 본문

카테고리 없음

Bash에서 파일 이름과 확장자 추출하기

스택큐힙리스트 2023. 3. 17. 23:19
반응형

저는 파일 이름(확장자 제외)과 확장자를 각각 얻고 싶습니다.

지금까지 찾은 최고의 해결책은:

NAME=`echo $FILE | cut -d'.' -f1`

EXTENSION=`echo $FILE | cut -d'.' -f2`

이것은 잘못된 것입니다. 파일 이름에 여러 . 문자가 포함되어 있으면 작동하지 않습니다. 예를 들어, a.b.js 가 있다면, a 및 b.js 대신에는 a.b 및 js 를 고려할 것입니다.

Python으로 쉽게 할 수 있습니다.

file, ext = os.path.splitext(path)

하지만 가능하다면 이것 때문에 파이썬 인터프리터를 실행하고 싶지 않습니다.

더 좋은 아이디어가 있나요?

답변 1

먼저 경로를 제외한 파일 이름을 가져옵니다.

filename=$(basename -- $fullfile)

extension=${filename##*.}

filename=${filename%.*}

대신 파일 확장자가 예측할 수 없을 때에도 작동하는 '/' 경로의 마지막 부분에 초점을 맞출 수 있습니다.

filename=${fullfile##*/}

문서를 확인해보시기를 권장합니다.

웹사이트의 3.5.3 Shell Parameter Expansion 섹션에서

파라미터 확장이라는 섹션에서 bash 매뉴얼 페이지를 참조하십시오.

답변 2

배시(Bash)에서 파일 이름과 확장자 추출하기

리눅스 운영 체제를 사용하는 개발자라면 배시(Bash) 쉘 스크립트를 사용해보거나 이미 사용해봤을 것입니다. 이번에는 배시 쉘 스크립트에서 파일 이름과 확장자를 추출하는 방법에 대해서 살펴보겠습니다.

먼저, 파일 이름과 확장자를 각각 추출하는 방법부터 살펴보겠습니다. 파일 이름과 확장자는 파일 경로에서 마지막 . 문자 이후의 문자열로 구분됩니다. 따라서, 파일 경로에서 파일 이름과 확장자를 추출하기 위해서는 다음과 같은 스크립트를 사용할 수 있습니다.

```

# 파일 경로

path=/home/user/documents/sample.pdf

# 파일 이름과 확장자 추출

filename=$(basename —- $path)

extension=${filename##*.}

filename=${filename%.*}

echo 파일 경로: $path

echo 파일 이름: $filename

echo 파일 확장자: $extension

```

위 스크립트에서는 basename 명령어를 사용해 파일 경로에서 파일 이름을 추출한 후, ${filename##*.}과 ${filename%.*}을 사용해 확장자와 파일 이름을 추출합니다. ${filename##*.}은 파일 경로에서 가장 마지막에 있는 . 문자 이후의 문자열을 가져오고, ${filename%.*}은 파일 경로에서 가장 마지막 . 문자 이전의 문자열을 가져옵니다.

다음으로, 여러 개의 파일에서 파일 이름과 확장자를 추출하는 방법을 살펴보겠습니다. 여러 파일에서 파일 이름과 확장자를 추출할 때는 for 반복문을 사용하면 됩니다. 예를 들어, 다음과 같은 스크립트를 사용하면 현재 디렉토리 내의 모든 파일에서 파일 이름과 확장자를 추출할 수 있습니다.

```

# 현재 디렉토리 내의 모든 파일 이름과 확장자 추출

for file in *

do

if [ -f $file ]

then

filename=$(basename —- $file)

extension=${filename##*.}

filename=${filename%.*}

echo 파일 이름: $filename

echo 파일 확장자: $extension

fi

done

```

위 스크립트는 현재 디렉토리 내의 모든 파일을 가져온 후, 파일 이름과 확장자를 하나씩 추출합니다. -f 옵션은 파일이 실제로 존재하는 파일인지 확인하는 것으로, 이를 사용해 파일만 추출할 수 있습니다.

배시(Bash)에서 파일 이름과 확장자를 추출하는 방법을 살펴보았습니다. 이를 사용하면 파일 경로에서 파일 이름과 확장자를 쉽게 추출할 수 있습니다. 또한, 여러 개의 파일에서 파일 이름과 확장자를 추출할 때는 for 반복문을 사용하면 됩니다. 배시(Bash) 쉘 스크립트에서 파일 이름과 확장자를 추출해 파일 처리를 보다 쉽게 할 수 있습니다.

반응형
Comments