함수 내에서 압축이 풀린 파일의 액세스 이름

함수 내에서 압축이 풀린 파일의 액세스 이름

저는 WSL2에서 Ubuntu를 실행하고 있습니다. 나는 종종 학교 웹사이트에서 압축된 과제 파일을 다운로드합니다. Windows의 다운로드 폴더로 이동합니다. 내 Linux 파일 시스템의 특정 경로에 복사하고 압축을 푼 다음 파일 이름 앞에 내 이름을 넣도록 이름을 바꾸고 싶습니다.

이것이 내가 지금까지 가지고 있는 것입니다:

params: $1: filename, $2: week_x, $3: day_y
hwcopy() {
    cp $1 /home/myName/homework/$2/$3
    rm -r $1
    cd /home/myName/homework/$2/$3
    unzip $1
}

함수가 있는데 addname문제는 함수를 호출하면 addname $1압축된 폴더의 이름만 바뀐다는 것입니다.

제가 생각해낸 해결책은 다음과 같습니다.

hwcopy() {
    cp $1.zip /home/myName/homework/$2/$3
    rm -r $1.zip
    cd /home/myName/homework/$2/$3
    unzip $1.zip
    addname $1
}

이것이 효과가 있을 것 같지만 $1에 대한 파일 이름을 자동 완성한 후 인수에서 .zip을 제거하는 함수를 호출할 때마다 백스페이스를 4번 눌러야 하기 때문에 약간 짜증납니다. 이를 수행하는 쉬운 방법이 있습니까?

저는 Linux를 처음 접해서 어떻게 해야 할지 모르겠지만 $1을 함수 내부의 문자열로 저장한 다음 마지막 4자를 잘라서 다른 모든 항목에 전달할 수 있는 방법이 있을지도 모른다고 생각했습니다.

답변1

Bash에서는 문자 대체를 사용하여 %콘텐츠의 끝을 제거합니다.

$ file="myfile.zip"
$ echo "${file%.zip}"
myfile

와일드카드를 사용할 수 있습니다.

$ file="myfile.zip"
$ echo "${file%.*}"
myfile

테마를 최대화하려면 double을 사용할 수 있습니다 %.

$ file="myfile.tar.gz"
$ echo "${file%.*}"
myfile.tar
$ echo "${file%%.*}"
myfile

관련 정보