Answers:
首先,如果您尚未安装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 -@
从Zip存档中排除文件 (摘自http://osxdaily.com/2013/04/30/how-to-exclude-files-from-a-zip-archive/)
创建zip归档文件时,文件排除的基础围绕该
-x
标志,该标志用于从归档文件中排除与特定名称或模式匹配的文件。最基本的情况如下所示:zip archive.zip files -x "ExcludeMe"
意味着您可以排除单个文件,说它名为“ Nothanks.jpg”
zip archive.zip images/ -x "Nothanks.jpg"
让我们涵盖一些有用的具体示例。
从Zip存档中排除.DS_Store文件
这将防止通常不可见的Mac元数据
.DS_Store
文件包含在zip归档文件中,这些文件默认情况下捆绑在其中:zip -r archivename.zip archivedirectory -x "*.DS_Store"
但是,如果目录包含子目录,则您将希望使用该命令的另一种形式来从子目录中排除ds_store文件:
zip -r archive.zip directory -x "*/\.DS_Store"
注意:并非所有shell都要求使用引号使此命令正常工作,但是在bash shell(OS X的默认设置)中,您将需要使用引号将通配符和模式排除在外。
从Zip存档中排除特定的文件类型
使用通配符,您还可以通过关注扩展名来排除特定类型的所有文件。例如,此命令将压缩整个目录,减去所有
.jpg
文件:zip -r archive.zip directory -x "*.jpg"
可以为文件名中匹配的任何特定文件扩展名或模式进行修改。
从Zip存档中排除.git或.svn目录
压缩目录,减号
.git
及其内容:zip -r zipdir.zip directorytozip -x "*.git*"
压缩文件夹,不包括
.svn
目录:zip -r zipped.zip directory -x "*.svn*"
从Zip存档中排除所有隐藏文件
由于模式和可以使用通配符,也可以排除由一个时期正在做前缀,所以任何或所有隐藏文件和文件夹,无论是像一个目录
.svn
或像一个单独的文件.bash_profile
或.htaccess
。zip -r archivename.zip directorytozip -x "*.*"
或从所有子目录中排除所有不可见文件:
zip -r archive.zip directory -x "*/\.*"
添加"
到.*
(否则,您的外壳将扩展.*
为当前目录中的点文件),并且还排除子目录中的隐藏文件:
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 -r zipfile.zip directory -x directory/.*
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
)比预期的要长,但可以正常工作。子目录也包括在内,因此+1和一个可接受的答案:-)