我有一个包含许多目录、文件等的文件 myarchive.zip。假设这个 myarchive.zip 文件位于名为“b”的目录中。好吧,当我使用“unzip myarchive.zip”命令时,系统会默认创建一个名为“myarchive”的目录,其中包含 zip 文件的内容。我不希望系统创建这个“myarchive”目录——我只想将内容提取到目录“b”中。这可能吗?
我现在所做的只是发出一个“cp”命令,将文件从新创建的目录(在本例中为“myarchive”到“b”)复制到我想要的地方。
Sté*_*las 62
我的版本unzip
有一个-j
选项,以不产生任何目录。
所以
unzip -j /path/to/file.zip
Run Code Online (Sandbox Code Playgroud)
将所有文件解压到当前目录,而不恢复zip
文件中存储的目录结构。
如果您只想从存档中删除一级目录(提取myarchive/dir/file
为dir/file
,而不是file
),则可以使用bsdtar
(zip
除了tar
文件之外还支持文件)及其-s
选项。
bsdtar -xf /path/to/file.zip -s'|[^/]*/||'
Run Code Online (Sandbox Code Playgroud)
接受的答案没有指定如何做,正如您在问题中所说,如果您仍然想提取到特定文件夹而不使用存储在 zip 文件中的文件夹路径,您可以使用-j
带有-d
选项的选项以这种方式:
unzip -j /path/to/file.zip -d other_folder
Run Code Online (Sandbox Code Playgroud)
或者对于你的情况
unzip -j myarchive.zip -d b
Run Code Online (Sandbox Code Playgroud)
小智 7
使用提示可以轻松做到这一点,创建临时文件夹,然后将文件移回当前目录,例如:
unzip myfile.zip -d ./tmp
mv ./tmp/*/* .
Run Code Online (Sandbox Code Playgroud)