压缩文件夹的内容而不包含文件夹本身


76

我有一个目录folder,看起来像这样:

folder
      -> root_folder
                    -> some files

我想将此目录压缩到中zipped_dir,我尝试过:

zip -r zipped_dir.zip folder/*

但这会生成一个如下所示的ZIP:

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

换句话说,它包括我要压缩其内容的目录。如何在不移动任何内容的情况下从ZIP中排除此父目录?

IE浏览器,我想要这个最终结果:

zipped_dir
          -> root_folder
                        -> some files

Answers:


74

尝试使用此命令(您会明白的)

cd folder; zip -r ../zipped_dir.zip *

也许还有其他方法,但这对我来说是最快和最简单的方法:)


2
这可以完美地完成该技巧。注意:它将执行chroot
loretoparisi

等效:zip -r zipped_dir.zip folder/*
Tobias Kolb

5
@TobiasKolb,也许您没有阅读问题。OP不想将文件夹放入zip的存储路径中。
罗密欧·尼诺夫

2
似乎唯一的方法
罗伯特·罗伯特(Robert

1
@PabloDiaz,在我的示例cd -中将执行此工作(仅一个命令):)或cd ..
Romeo Ninov

30

使用-j; 例如:zip -r -j zipped_dir.zip folder/*

它不会压缩“ root_folder”。


7
如果我有两个同名文件,我会得到一个错误。
克里斯

11
OP可能只希望删除父目录,而不是全部删除。
托克兰

仍然创建目录zip -r -j package.zip ./dist/static/*使档案结构dist/static/myfiels
deathangel908 '17

4
它也会展平子目录文件。
Sumit Ramteke '18

3
-j选项消除所有目录信息,仅保存文件。也就是说,以“固定”方式将所有文件存储在一个目录下。
罗伯特


0

这对我有效:

7z a zipped.zip ./rootDir/*

它将创建一个zip带有根目录的归档文件:里面的任何文件/目录rootDir

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.