У меня есть проект с большим количеством скрытых папок / файлы в нем. Я хочу создать архив zip его, но в архиве не должны быть никакие скрытые папки / файлы. Если файлы в скрытой папке не скрыты, они не должны также быть включены.
Я знаю, что могу создать архив zip каталога как это:
zip -r zipfile.zip directory
Я также знаю, что могу исключить файлы с-x опцией, таким образом, я думал, что это могло бы работать:
zip -r zipfile.zip directory -x .*
Это не работало. Все скрытые каталоги были все еще в zip-файле.
Это также исключает скрытые файлы в раскрытых каталогах:
find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
Добавить "
к .*
(иначе Ваша оболочка расширяется .*
в точечные файлы в текущем каталоге), и также исключают скрытые файлы в подкаталогах:
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%)
Этот включает все "." каталоги, подкаталоги и"." файлы или каталоги в рамках каталогов... По существу первый ответ, но включает высокоуровневые "." файлы.
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/.*
При архивировании директоров, исключая некоторое расширение файла:
$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
В первую очередь, если у Вас нет установленной 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 "*/\.*"
Без скрытых папок и файлов в каталоге:
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%)