当前位置: 首页>>技术问答>>正文


如何通过没有隐藏文件的终端创建整个目录的zip存档?

, ,

问题描述

我有一个项目中有很多隐藏的文件夹/文件。我想创建它的zip-archive,但是在存档中不应该是任何隐藏的文件夹/文件。如果隐藏文件夹中的文件未隐藏,则不应包含它们。

我知道我可以像这样创建一个目录的zip存档:

zip -r zipfile.zip directory

我也知道我可以用-x选项排除文件,所以我认为这可能工作:

zip -r zipfile.zip directory -x .*

它没有工作。所有隐藏的目录仍在zip-file中。

最佳解决思路

这也排除了隐藏目录中的隐藏文件:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

次佳解决思路

"添加到.*(否则,您的shell将.*扩展到当前目录中的点文件),并且还排除子目录中的隐藏文件:

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

这将导致以.开头的文件不会被添加到您的zip文件中。

rinzwind@discworld:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)

第三种解决思路

首先如果你没有安装zip,首先安装如下:

sudo apt-get install zip

然后,只需创建一个zip文件即可:

zip -r compressed_filename.zip foldername

如果你想排除隐藏的文件:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@

第四种思路

这包括目录中的所有”.”目录,子目录和”.”文件或目录……基本上是第一个答案,但包含顶级”.”文件。

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

第五种思路

排除开始的所有文件夹的示例。 :

tar cvpzf folder.tgz folder/ --exclude '.*'

更好的压缩但更慢:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'

第六种思路

正确的方法是:

zip -r zipfile.zip directory -x directory/.*

第七种思路

压缩dirs除了一些文件扩展名:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"

第八种思路

目录中没有隐藏的文件夹和文件:

zip -r zipfile.zip directory/*

目录:
|── .git
│  
├── src
│   └── Work.file
├── .test
│   └── .file
└── test.file

$ zip -r zipfile.zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/247.html,未经允许,请勿转载。