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

Прежде всего, если у вас не установлен 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"

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

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

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

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

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

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

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 "*/\.*"