Bash

訪問函式內解壓縮文件的名稱

  • August 31, 2021

我在 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 個字元,然後將其傳遞給其他所有字元?

使用 bash,使用%char 替換來刪除內容的結尾:

$ 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

引用自:https://unix.stackexchange.com/questions/666951