将文件解压缩到当前目录

将文件解压缩到当前目录

我发现,.zip当你递归浏览子目录时,提取目录时也需要目录的路径。那么你如何存储路径呢?这几乎已经完成了,但是当 中有空格时,它无法正常工作{zip_file}

zip_dir=$PWD/$(basename "${zip_file}")

答案1

我也是从你的另一个问题中创建的。我花了一点时间,但这就是我能想到的方法:根据 zip 文件名创建文件夹,.zip从文件夹名称中删除 ,然后将 zip 文件解压到该文件夹​​中。

/bin/bash #!/bin/bash

echo“开始创建文件夹……”
查找 . -type f -iname "*.zip" | 同时读取文件名
 文件名1=${文件名:2}
 文件夹名称=$PWD/"${filename1%.*}"
 mkdir -p "$文件夹名称"
 解压缩“$文件名”-d“$文件夹名称”
 echo “创建目录 $foldername 并将文件提取到其中。”
完毕

此行filename1=${filename:2}去掉了./名称中的 。

答案2

编辑:我肯定没有正确测试这一点。

通常,在进行变量赋值时不需要引号,只有在取消引用变量时才需要。进行赋值时,不需要在要取消引用的变量周围加上引号,但由于取消引用发生在子 shell 中,因此需要在该${zip_file}部分周围加上引号,以便将其值正确传递给 basename。引号是不是事实上需要围绕整行,因为这样它就会回到变量赋值的上下文中,而不需要引号,因为 bash 会正确地将值从子 shell 传递到赋值行。

感谢@janos 指出这一点。我不确定我在测试原始行时搞砸了什么,导致我走上了过多引号的道路。你是对的,以下内容没有问题:

zip_dir=$PWD/$(basename "${zip_file}")

相关内容