파일 이름의 확장자 부분(예:solution.txt-->sol.txt)을 추출하는 방법은 무엇입니까?

파일 이름의 확장자 부분(예:solution.txt-->sol.txt)을 추출하는 방법은 무엇입니까?

solution.txt확장명(예: -> ) 이 있는 파일 이름의 일부를 추출해야 합니다 sol.txt.

답변1

매개변수 확장 사용:

$ file="solution.txt"
$ echo "${file:0:3}.${file##*.}"
sol.txt

답변2

sed와 Python을 사용하여 완료

echo "solution.txt" |sed "s/\(...\)\([a-z]\{5\}\)\(....\)/\1\3/g"

산출

sol.txt

파이썬 사용

 a="solution.txt"
print a[0:3] + a[-4:]

산출

sol.txt

답변3

또 다른 접근 방식은 파일 이름을 해당 구성 요소로 분할하고 원하는 형식으로 재구성하는 것입니다.

#!/bin/sh
origname="$1"
# directory = everything from "origname" except the part after the last /
directory="${origname%/*}"
if [ "$origname" = "$directory" ]; then
    # there was no directories in the original name at all
    directory="."
fi
# to get the filename, remove everything up to the last /
filename="${origname##*/}"
# to get the extension, remove everything up to the last .
extension="${origname##*.}"

# take first 3 characters of original filename as a new name
newname="$(echo "$filename" | cut -c 1-3)"

# output the result
echo "${directory}/${newname}.${extension}"

이것은 더 길지만 사용 사례에 맞게 이해하고 수정하기가 더 쉽기를 바랍니다.

관련 정보