как исключить каталоги и архивировать файлы в каталоге?


32

Мне нужно заархивировать каталог, исключая некоторые подкаталоги и файлы; Я использовал это:

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

без успеха; node_modulesпапка в основной bower_componentsпапке внутри приложения


каков ваш результат и каков ваш ожидаемый результат?
ДЕН

Вы хотите исключить все подкаталоги или только некоторые из них?
Сергей Колодяжный

Ответы:


36

Я просто догадываюсь, что вы хотите.

-x ".*"

исключить все файлы, начинающиеся с точки

сделать это как:

-x .\*

исключить все файлы (с точкой в ​​имени файла)

сделать это как:

-x \*.\*

-

-x "app/bower_components" -x "node_modules"

исключить этот каталог и все файлы в нем

сделать это как:

-x app/bower_components/\* -x node_modules/\*

-

-x "*.zip"

исключить все zip-файлы

сделать это как:

-x \*.zip

Вы исключаете node_modules дважды


2
спасибо, я получил это, используя различные посты, полученные к этому: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho Ваш комментарий выше должен быть ответом, поскольку он, кажется, работает для меня ...
chesedo

7

Нечто подобное должно сработать:

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список каталогов и типов файлов (расширений) для исключения.


Теперь я знаю, что **\*это рекурсивное исключение. Большое спасибо.
Дык Тран

6

Предполагая, что ваш каталог является git-репозиторием (и, судя по этому вопросу, это очень вероятно), вы можете добавить каталоги, которые вы хотите исключить, в .gitignoreфайл и использовать git archiveкоманду для архивирования содержимого вашего каталога:

git archive --format=zip HEAD -o zipfile.zip

В вашем примере .gitignoreфайл должен выглядеть следующим образом:

node_modules
app/bower_components

3

Это прекрасно работает для меня в Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.