问题描述
我有一个项目中有很多隐藏的文件夹/文件。我想创建它的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%)