解压缩文件内容,但不创建存档文件夹

解压缩文件内容,但不创建存档文件夹

我有一个文件 myarchive.zip,其中包含许多目录、文件等。假设这个 myarchive.zip 文件位于名为“b”的目录中。好吧,当我使用“unzip myarchive.zip”命令时,系统默认创建一个名为“myarchive”的目录,其中包含 zip 文件的内容。我愿意不是希望系统创建这个“myarchive”目录 - 我只想将内容提取到目录“b”。这可能吗?

我现在所做的只是发出一个“cp”命令,将文件从新创建的目录(在本例中为“myarchive”到“b”)复制到我想要的位置。

答案1

我的版本unzip有一个-j选项不创建任何目录。

所以

unzip -j /path/to/file.zip

会将所有文件解压到当前目录中,而不恢复文件中存储的目录结构zip

如果您只想从存档中删除一级目录(提取myarchive/dir/filedir/file,而不是file),您可以使用(除了文件之外bsdtar还支持文件)及其选项。ziptar-s

bsdtar -xf /path/to/file.zip -s'|[^/]*/||'

答案2

看起来这真的很简单bsdtar

bsdtar --strip-components=1 -xvf file.zip

答案3

接受的答案没有指定如何做,正如您在问题中所说,如果您仍然想提取到特定文件夹而不使用 zip 文件中存储的文件夹路径,您可以以这种方式使用-j选项 with option -d:

unzip -j /path/to/file.zip -d other_folder

或针对您的情况

unzip -j myarchive.zip -d b

答案4

假设您已经在该b目录中:

tar zxvf myarchive.zip --strip-components=1

否则:

tar zxvf b/myarchive.zip --strip-components=1 -C b/

相关内容