Как я могу создать архив zip целого каталога через терминал без скрытых файлов?

У меня есть проект с большим количеством скрытых папок / файлы в нем. Я хочу создать архив zip его, но в архиве не должны быть никакие скрытые папки / файлы. Если файлы в скрытой папке не скрыты, они не должны также быть включены.

Я знаю, что могу создать архив zip каталога как это:

zip -r zipfile.zip directory

Я также знаю, что могу исключить файлы с-x опцией, таким образом, я думал, что это могло бы работать:

zip -r zipfile.zip directory -x .*

Это не работало. Все скрытые каталоги были все еще в zip-файле.

223
задан 27 August 2011 в 11:01

8 ответов

Это также исключает скрытые файлы в раскрытых каталогах:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
107
ответ дан 22 November 2019 в 22:41

Добавить " к .* (иначе Ваша оболочка расширяется .* в точечные файлы в текущем каталоге), и также исключают скрытые файлы в подкаталогах:

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

Это приведет к файлам, запускающимся с 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%)
54
ответ дан 22 November 2019 в 22:41

Этот включает все "." каталоги, подкаталоги и"." файлы или каталоги в рамках каталогов... По существу первый ответ, но включает высокоуровневые "." файлы.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@
8
ответ дан 22 November 2019 в 22:41

Пример для исключения всех папок, начинающихся с.:

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

Лучше сожмитесь, но медленнее:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
8
ответ дан 22 November 2019 в 22:41

Корректный метод был бы:

zip -r zipfile.zip directory -x directory/.*
5
ответ дан 22 November 2019 в 22:41

При архивировании директоров, исключая некоторое расширение файла:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
4
ответ дан 22 November 2019 в 22:41

В первую очередь, если у Вас нет установленной 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"

Давайте покроем несколько определенных примеров, где это полезно.

Исключите.DS_Store файлы из архивов Zip

Это предотвратит обычно невидимые метаданные Mac .DS_Store файлы от того, чтобы быть включенным в архив zip, которое связывается в по умолчанию:

zip -r archivename.zip archivedirectory -x "*.DS_Store"

Если каталог будет включать подкаталоги однако, то Вы захотите использовать другое изменение той команды для исключения ds_store файлов из подкаталогов также:

zip -r archive.zip directory -x "*/\.DS_Store"

Примечание: не все оболочки требуют, чтобы цитаты для этой команды работали правильно, но в оболочке удара (значение по умолчанию для OS X) необходимо будет использовать кавычки для исключения с подстановочными знаками и шаблонами.

Исключите определенные типы файлов из архива Zip

С подстановочными знаками можно также исключить все файлы определенного типа путем фокусировки на расширении. Например, эта команда архивирует весь каталог минус любой .jpg файлы:

zip -r archive.zip directory -x "*.jpg"

Это могло быть изменено для любого определенного расширения файла или шаблона, подобранного в имени файла.

Исключите .git или .svn каталог из архива Zip

Архивируйте каталог, минус .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 "*/\.*"
113
ответ дан 22 November 2019 в 22:41

Без скрытых папок и файлов в каталоге:

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%)
3
ответ дан 22 November 2019 в 22:41

Другие вопросы по тегам:

Похожие вопросы: