有几次,说 I have a.zip
,它会自行解压缩a/*
。
但是,通常有 zip 文件会将其所有内容溢出到当前目录中。这需要我手动创建导演a
并解压缩到其中。
但是,如果作为一项策略我总是创建一个目录,并且 zip 原来是第一种,那么我的结构看起来a/a/*
并不理想。
在我上面描述的两种类型中,有没有一种方法可以解压缩a.zip
到它的类型?a/*
有几次,说 I have a.zip
,它会自行解压缩a/*
。
但是,通常有 zip 文件会将其所有内容溢出到当前目录中。这需要我手动创建导演a
并解压缩到其中。
但是,如果作为一项策略我总是创建一个目录,并且 zip 原来是第一种,那么我的结构看起来a/a/*
并不理想。
在我上面描述的两种类型中,有没有一种方法可以解压缩a.zip
到它的类型?a/*
用于
zipinfo
显示压缩内容。:不过,如果您正在寻找自动化答案,这可能无法回答您的问题。
编辑:您可以做的是检查每行输出
zipinfo
中的正斜杠字符。如果有一行缺少该字符,您就知道它位于 zip 文件的根目录。不幸的是,我无法完全想到如何做到这一点。不确定它是否会起作用,但这是一个未经测试的命令:
编辑:马克佩里曼的建议可能更好。我刚刚意识到我的命令会检查文件是否包含在子文件夹中,但它不会检查所有文件是否都包含在同一个根文件夹下。
尝试这个:
如果使用
zipinfo
你可以挤$has_parent
线到这个:想法很简单 - 如果存档的根级别上有多个文件,如果您解压缩它显然会破坏您的当前目录,因此您必须事先创建一个父目录并在其中解压缩文件。否则,如果存档中的所有文件都具有相同的父级,则可以在当前目录中解压缩。