Мне нужно заархивировать каталог, исключая некоторые подкаталоги и файлы; Я использовал это:
zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"
без какого-либо успеха; node_modules
является папкой в основной папке, а bower_components
находится внутри приложения папки
Нечто подобное должно сработать:
zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*
Где следующий -x
- список каталогов и типов файлов (расширений), которые нужно исключить.
Я просто угадываю, что вы хотите.
-x ".*"
исключить все файлы, начинающиеся с точки
сделать это следующим образом:
-x .\*
исключить все файлы (с точкой в имени файла)
сделать например:
-x \*.\*
-
-x "app/bower_components" -x "node_modules"
исключают этот каталог и все файлы в нем
делают это следующим образом:
-x app/bower_components/\* -x node_modules/\*
-
-x "*.zip"
исключить все ZIP-файлы
сделать это следующим образом:
-x \*.zip
Вы исключаете node_modules дважды
в каждом проекте пропускайте node_modules следующим образом:
for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
Предполагая, что ваш каталог является git-репозиторием (и, судя по этому вопросу, это очень вероятно), вы можете добавить каталоги, которые вы хотите исключить, в файл .gitignore
и использовать команду git archive
для архивирования содержимого вашего каталог:
git archive --format=zip HEAD -o zipfile.zip
В вашем примере файл .gitignore
должен выглядеть следующим образом:
node_modules
app/bower_components
Это прекрасно работает для меня в Ubuntu 16.04:
sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"
. исключить все папки node_modules во всех папках.
zip -r node.zip . -x "**/node_modules/*"