
Я хотел бы заархивировать каталог, но исключить некоторые подкаталоги. Допустим, у меня такая структура:
directory
subdirectory 1
subdirectory 2
project 1
html
directory 1
vendor
node_modules
... (other directories)
project 2
html
directory 2
vendor
node_modules
... (other directories)
Я хотел бы заархивировать весь основной каталог, но исключить такие пути:
subdirectory2/*/html/vendor/**
subdirectory2/*/html/node_modules/**
где:
*
- одноуровневый каталог**
- это каталог с любыми файлами и подкаталогами
Проблема в том, что эти project 1
и project 2
довольно динамичны - их несколько. Также обратите внимание, что vendor
каталоги (и также в теории node_modules
) могут быть размещены в некоторых других местах, например, в , project 1/html/public/vendor
поэтому я бы не хотел исключать просто vendor
подкаталог, а только конкретный vendor
подкаталог, который находится именно в указанных html-каталогах проектов.
Можно ли сделать такую сложную вещь, используя только zip
команду, или, может быть, для этого нужно написать какой-то bash-скрипт?
Если это имеет значение, я использую MacOS.
Чего я добился на данный момент:
cd directory && zip test-zip.zip * -r -T -x */*/html/vendor/** */*/html/node_modules/**
Кажется, это почти работает, но оно создает пустые каталоги модулей вендора и узла (но не включает их содержимое)
решение1
Кажется, решение такое:
cd directory &&
zip test-zip.zip * -r -T -x "*/*/html/vendor/" "*/*/html/node_modules/" "*/*/html/vendor/**" "*/*/html/node_modules/**"
поэтому я исключаю все в этом каталоге и в тех каталогах тоже, а также заключаю все в кавычки, чтобы расширить его допустимым образом