Я хотел бы заархивировать каталог, но исключить некоторые подкаталоги. Допустим, у меня есть такая структура:
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/**
Кажется, что это почти работает, но создает пустые каталоги модулей вендоров и узлов (но не включает их содержимое)