如何在 Linux 中解压 zip 文件并在给定路径上创建新文件夹

如何在 Linux 中解压 zip 文件并在给定路径上创建新文件夹

我必须解压一个文件,我不想使用 CD,然后运行 ​​mkdir newfolder,然后再次回到我有 zip 文件的文件夹,然后运行 ​​unzip file.zip /home/user/newfolder

我想简单地从我所在的目录运行命令,它将为我创建文件夹或询问我位置 /home/user 上不存在新文件夹目录,您是否要创建一个 (Y/n)?并选择 y(此操作是否需要 root 访问权限无关紧要)

我已经检查过解压开关和谷歌,但在所有的例子中,他们都会创建一个目录,然后解压其中的文件

我正在使用 Debian Buster

答案1

man unzip说:

 unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...]  [-x xfile(s) ...] [-d exdir]

[-d exdir] 可选目录,用于将文件提取到其中。默认情况下,所有文件和子目录都在当前目录中重新创建;-d 选项允许在任意目录中提取(始终假设用户有权写入目录)。此选项不必出现在命令行的末尾;它也可以在 zipfile 规范之前(使用正常选项)、zipfile 规范之后或文件和 -x 选项之间接受。选项和目录可以连接在一起,中间没有任何空格,但请注意,这可能会导致正常的 shell 行为被抑制。特别是,-d ~(波浪号)由 Unix C shell 扩展为用户主目录的名称,但-d~被视为当前目录的文字子目录~

另外,7zip(7z命令)支持 ZIP 格式,并且有一个-o用于相同目的的参数

答案2

在这种-d情况下(fish shell),文件夹名称源自档案名称:

for i in *.zip ; unzip $i -d (basename $i .zip) ; end

唯一的问题是,当档案已经嵌入文件夹时,您最终会得到多余的级别。

因此,我想提一下unar做正确的事情(tm):自动创建一个文件夹,但只有当存档的根目录不是文件夹时才会自动创建。可以使用相同的-d选项覆盖此行为。另外,还可以unar处理 zip、rar 等...

不去爱的种种?

相关内容