Mar*_*oma 270 command-line zip
我有一个项目,里面有很多隐藏的文件夹/文件。我想为它创建一个 zip 存档,但存档中不应该有任何隐藏的文件夹/文件。如果隐藏文件夹中的文件不是隐藏的,它们也不应该被包含在内。
我知道我可以创建这样的目录的 zip 存档:
zip -r zipfile.zip directory
Run Code Online (Sandbox Code Playgroud)
我也知道我可以使用 -x 选项排除文件,所以我认为这可能有效:
zip -r zipfile.zip directory -x .*
Run Code Online (Sandbox Code Playgroud)
它没有用。所有隐藏目录仍在 zip 文件中。
M.A*_*pon 168
首先,如果您还没有安装 zip,请先安装它,如下所示:
sudo apt-get install zip
Run Code Online (Sandbox Code Playgroud)
然后简单地创建一个 zip 文件:
zip -r compressed_filename.zip foldername
Run Code Online (Sandbox Code Playgroud)
如果要排除隐藏文件:
find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@
Run Code Online (Sandbox Code Playgroud)
从 Zip 存档中排除文件 (取自http://osxdaily.com/2013/04/30/how-to-exclude-files-from-a-zip-archive/)
创建 zip 存档时文件排除的基础以
-x
标志为中心,该标志用于从存档中排除匹配特定名称或模式的文件。在最基本的情况下,它看起来像这样:Run Code Online (Sandbox Code Playgroud)zip archive.zip files -x "ExcludeMe"
这意味着您可以排除单个文件,比如它名为“Nothanks.jpg”
Run Code Online (Sandbox Code Playgroud)zip archive.zip images/ -x "Nothanks.jpg"
让我们介绍几个有用的具体示例。
从 Zip 档案中排除 .DS_Store 文件
这将防止通常不可见的 Mac 元数据
.DS_Store
文件包含在 zip 存档中,这些文件默认捆绑在:Run Code Online (Sandbox Code Playgroud)zip -r archivename.zip archivedirectory -x "*.DS_Store"
但是,如果目录包含子目录,则您还需要使用该命令的另一个变体来从子目录中排除 ds_store 文件:
Run Code Online (Sandbox Code Playgroud)zip -r archive.zip directory -x "*/\.DS_Store"
注意:并非所有 shell 都需要引号才能使该命令正常工作,但在 bash shell(OS X 的默认设置)中,您需要使用引号来排除通配符和模式。
从 Zip 存档中排除特定文件类型
使用通配符,您还可以通过关注扩展名来排除某种类型的所有文件。例如,此命令将压缩整个目录,减去任何
.jpg
文件:Run Code Online (Sandbox Code Playgroud)zip -r archive.zip directory -x "*.jpg"
可以针对文件名中匹配的任何特定文件扩展名或模式进行修改。
从 Zip 存档中排除 .git 或 .svn 目录
压缩一个目录,减去
.git
它的内容:Run Code Online (Sandbox Code Playgroud)zip -r zipdir.zip directorytozip -x "*.git*"
压缩一个文件夹,不包括
.svn
目录:Run Code Online (Sandbox Code Playgroud)zip -r zipped.zip directory -x "*.svn*"
从 Zip 存档中排除所有隐藏文件
由于模式和可以使用通配符,也可以排除由一个时期正在做前缀,所以任何或所有隐藏文件和文件夹,无论是像一个目录
.svn
或像一个单独的文件.bash_profile
或.htaccess
。Run Code Online (Sandbox Code Playgroud)zip -r archivename.zip directorytozip -x "*.*"
或者从所有子目录中排除所有不可见文件:
Run Code Online (Sandbox Code Playgroud)zip -r archive.zip directory -x "*/\.*"
arr*_*nge 123
这也排除了未隐藏目录中的隐藏文件:
find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
Run Code Online (Sandbox Code Playgroud)
Rin*_*ind 59
添加"
到.*
(否则,您的 shell 将扩展.*
到当前目录中的点文件),并排除子目录中的隐藏文件:
zip -r zipfile.zip . -x ".*" -x "*/.*"
Run Code Online (Sandbox Code Playgroud)
这将导致以 a 开头的文件.
不会被添加到您的 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%)
Run Code Online (Sandbox Code Playgroud)
小智 10
排除所有以 . :
tar cvpzf folder.tgz folder/ --exclude '.*'
Run Code Online (Sandbox Code Playgroud)
更好的压缩但更慢:
tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
Run Code Online (Sandbox Code Playgroud)
小智 9
这个包括所有的“。” 目录、子目录和“.” 目录中的文件或目录......本质上是第一个答案,但包括顶级“。” 文件。
find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@
Run Code Online (Sandbox Code Playgroud)
小智 7
目录中没有隐藏的文件夹和文件:
\nzip -r zipfile.zip directory/*\n
Run Code Online (Sandbox Code Playgroud)\n目录:
\n|\xe2\x94\x80\xe2\x94\x80 .git\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Work.file\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .test\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 .file\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.file\n
Run Code Online (Sandbox Code Playgroud)\n$ zip -r zipfile.zip directory/*\nadding: directory/src/ (stored 0%)\nadding: directory/src/Work.file (stored 0%)\nadding: directory/test.file (stored 0%)\n
Run Code Online (Sandbox Code Playgroud)\n
小智 5
压缩目录时不包括某些文件扩展名:
$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
927017 次 |
最近记录: |