我必须解压一个文件,我不想使用 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 等...
不去爱的种种?