函数内解压文件的访问名称

函数内解压文件的访问名称

我在 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 中,使用 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

相关内容