Поэтому, если я правильно понимаю, вы пытаетесь заархивировать файлы и папки в определенной папке, но не включая корневую папку.
Пример:
/test/test.txt
/test/test2.txt
где test.txt и test2.txt будут храниться в zip, но не в / test /
Вы можете перейти в каталог / test / и запустить что-то вроде:
zip -r filename.zip ./*
Что бы создать архив в той же папке с именем filename.zip. Или, если запустить его из-за пределов папки, вы можете запустить,
zip -r test.zip test/*
/ * - это часть, которая включает в себя только содержимое папки, а не всю папку.
Изменить: OP хотел несколько почтовых индексов, решение в конечном итоге было немного взломать, мне интересно, есть ли лучший способ сделать это.
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
не работает. Есть ли правильный способ добиться этого за пределами каталога?Используйте опцию
-j
или--junk-paths
в вашей команде zip.Со страницы руководства zip :
источник
Как насчет этой команды?
источник
cd
. Хотелось бы найти способ более точно указать сохраненный путь.Надеюсь это поможет.
Он хранит основную оболочку в том же каталоге и изменяет только каталог вложенной оболочки, которая умирает после команды.
источник