压缩包中包含隐藏文件

110

在Linux中,我可以通过执行以下操作将当前目录中的所有文件(除隐藏文件外)压缩为zip文件:

zip 1.zip *

但是我该如何包含隐藏文件?

8个回答

200

编辑: 正确的方式是 zip -r 1.zip .

我之前给出的答案中的命令不正确,因为它们还包括了父目录。


你尝试过这个吗:

zip yourfile.zip sourcedir/* .*

或者在你的情况下

zip 1.zip * .[^.]*

它应该包括所有隐藏文件。


1
那基本上是可以工作的,但现在我也得到了../,我认为我不想要它。 - john-jones
你的意思是,通过 ../ 你也在压缩上级目录中的文件吗? - Gunnar
1
显然,当我在一个包含子文件夹a和一个名为“.hidden_file”的隐藏文件的文件夹中执行zip 1.zip * .*命令时,会得到以下结果: - john-jones
添加:a/(已存储0%) 添加:../(已存储0%) 添加:.hidden_file(已存储0%) - john-jones
14
正如你所说,“zip -r 1.zip .”也是可行且更简单的方法。 - john-jones

25

或者您可以添加更简单的内容

zip 1.zip ./

1
你说过 zip -r 1.zip ./ - undefined

17

请确保不会忘记这一点,因为这是开发者论坛,我们中的许多人使用git。

获取zip包中仅包含所需内容的简单方法是使用git archive -o filename.zip branch命令。


1
谢谢!这正是我所需要的:比手动调用zip少了很多麻烦。 - Egon
这种方法不包括 .git/ 目录。 - ScottMcC
@ScottMcC 如果你需要的是已经与git相关的东西,那么你不会直接克隆它吗? - code
使用scp进行传输会很方便。 - William Rusnack

7

如果您想压缩所有文件(包括隐藏文件),请使用以下命令:zip -r namefiles.zip .

"."代表文件夹中的所有文件。

zip -r namefiles.zip "folder will zip"

3
你的答案与被接受的答案有何不同?被接受的答案是“正确的方法是zip -r 1.zip .”。 - Simon MᶜKenzie
@SimonMᶜKenzie 他还解释了"."的含义。我想这就是区别所在了。 - Chung Lun Yuen
12
"." 并不代表文件夹中的所有文件,而是指代当前文件夹本身,它最终将包括其所有内容。 - Izhar Aazmi

7
在macOS 10.15.7上,我需要单独添加所有以点开头的文件(\.*),以及其他文件(*):
zip -r file.zip \.* *

2
如果您在当前目录没有保存zip文件的权限,您可以进入具有权限的目录并键入以下命令。"最初的回答"
zip -r 1.zip /path/to/source/dir/.

最初的回答:然而,如果在“.../some_dir”中输入以下命令:
unzip 1.zip

那么你的文件将被解压缩到.../some_dir/path/to/source/dir/中。最初的回答。

1
如果您想递归保存当前目录下的某个子目录,包括隐藏文件和普通文件,请输入以下命令:
$ zip -r backup_subdirectory.zip backup_subdirectory/. backup-subdirectory/*

解压缩的方法如下:

$ unzip backup_subdirectory.zip 

使用tar创建归档文件更简单:

$ tar czvf backup_subdirectory.tar.gz backup_subdirectory/

提取归档文件中的所有文件:

$ tar xzvf backup_subdirectory.tar.gz

1
zip -r 1.zip .* -x "../*"

仅仅执行zip -r 1.zip .* 命令会包含父级文件夹,所以关键是要使用-x "../*"命令来排除父级文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接