У меня есть структура каталогов, которая выглядит следующим образом:
basedir/dir1/dir2/dir3/dir4/myzip/subdirs
Я хотел бы создать архив myzip dir со всеми его подкаталогами, но без включения dir1 - dir4 в zip-архив, исохраните полученный архив myzip.zip в basedir.
Это не работает, поскольку dir1 до 4 включаются в архив
cd basedir
zip -r myzip.zip dir1/dir2/dir3/dir4/myzip
Я знаю, что могу сделать это таким образом
cd basedir/dir1/dir2/dir3/dir4
zip -r ../../../../myzip.zip myzip
cd ../../../..
# Need to go back to basedir for next commands
Это также работает
cd basedir
cp -r dir1/dir2/dir3/dir4/myzip myzip
zip -r myzip.zip myzip
rm -rf myzip
# Kind of annoying to have to copy then remove
Есть ли более элегантный способ сделать это?Я надеялся, что смогу добавить некоторые аргументы в первую набранную мной команду, чтобы она работала так, как я хотел в одной строке.
Разве я не хочу делать то, что большинство людей тоже хотят делать?ИМО, они должны включать в себя только вложенные каталоги по умолчанию в команде zip.
Я не понимаю смысла текущей реализации zip, потому что все они делают одно и то же:
zip -r myzip.zip dir1/dir2/dir3/dir4/myzip
zip -r myzip.zip dir1/dir2/dir3/dir4
zip -r myzip.zip dir1/dir2/dir3/
zip -r myzip.zip dir1/dir2/
zip -r myzip.zip dir1/
Разве не было бы умнее написать команду zip, чтобы она включала в себя только подкаталоги по умолчанию?
Тогда, если вы хотите включить dir1 - dir4, вы можете просто сделать:
myVersionOfZip -r myzip.zip dir1
Если бы вы хотели только подкаталоги myzip, вы бы сделали:
myVersionOfZip -r myzip.zip dir1/dir2/dir3/dir4/myzip