Я вызываю команду zip из скрипта, где я не могу сменить каталог. Мне нужно сделать zip-файл материала data/kit123/
из каталога, в котором находятся данные, но я хочу, чтобы содержимое zip было только содержимым kit123
с путями относительно kit123
.
Это структура каталогов
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Мой скрипт выполняется в myworkingdir и не может изменить каталоги.
Если я позвоню
zip -r kit123.zip data/kit123
тогда структура в zip-файле будет
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
но я хочу чтобы это было
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Есть ли опция zip, которую я могу использовать для этого? Кажется странным, что это должно зависеть от моего рабочего каталога
Я знаю, что это не -j. что один разрушает структуру в kit123
command-line
zip
Натан
источник
источник
zipfile.write(arcname=
позволяет это: bocwОтветы:
Как вы заметили в комментариях, теперь вы знаете, как изменить каталог с помощью вашего скрипта, я объясню ситуацию с zip относительно относительных путей.
Это, вероятно , проще всего открыть терминал и
cd
кkit123
; Вы должны сделать целевой каталог вашим рабочим каталогом - вы не можете запустить команду из базы вашего домашнего каталога, или он выберет все пути./home/$USER/..
Если вы используете-j
опцию, он удалит все пути, как нет. на самом деле не является эквивалентом опции tar,--strip
с которой можно указывать разные уровни удаления пути.Поэтому, пожалуйста, перейдите в целевой каталог (
kit123
) и введите:Это рекурсивно (
-r
) сохранит все (*
) файлы и каталоги файлов в текущем каталоге (kit123
), и, поскольку относительные пути (-p
) сохранятся автоматически, если-j
опция не присутствует, структура каталогов будет такой, как вы пожелаете.Kit123
и подпапки (kitpart1
) с их собственными файлами будут присутствовать:Вы можете проверить содержимое zip-файла с помощью
unzip -l zipfile.zip
.Для получения дополнительной информации о других доступных опциях
zip
, смотритеman zip
и справочную страницу Ubuntu онлайн .источник