如果我选择一个zip文件,然后右键单击“在此处提取”,则会创建一个包含zip文件名的文件夹,并将zip文件的全部内容提取到其中。
但是,我想通过外壳转换几个zip文件。但是当我这样做
unzip filename.zip
该文件夹"filename"未创建,但所有文件都提取到当前目录中。
"filename"
我看过参数,但是没有这样的参数。我也试过
for zipfile in \*.zip; do mkdir $zipfile; unzip $zipfile -d $zipfile/; done
但是.zip2. $ zipfile和4. $ zipfile 的扩展名必须使用sed删除。如果我做
.zip
for zipfile in \*.zip; do mkdir sed 's/\.zip//i' $zipfile; unzip $zipfile -d sed 's/\.zip//i' $zipfile/; done
它不起作用。
如何正确替换.zip扩展名$zipfile?
$zipfile
有没有比shell脚本更简单的方法?
“在这里提取”仅是unzip您使用的任何包装器的功能。 unzip只会提取存档中的实际内容。没有比shell脚本更简单的方法了。但是sed,awk如果您具有POSIX兼容的外壳程序,则不需要,等等。
unzip
sed
awk
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
(您绝不能逃脱,*否则路径名扩展将不会发生。)请注意,如果ZIP归档文件包含目录(例如Eclipse归档文件(始终包含eclipse/)),则无论如何都将以结尾./eclipse*/eclipse/eclipse.ini。试运行echo前添加unzip。
*
eclipse/
./eclipse*/eclipse/eclipse.ini
echo