Я вызываю команду 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
вариант почтового индекса, который я могу использовать, чтобы достигнуть этого? Кажется странным, что это должно зависеть от моего рабочего каталога
Я знаю, что это не -j. что один разрушает структуру внутри kit123
Как вы заметили в комментариях, теперь вы знаете, как изменить каталог с помощью вашего скрипта, я объясню ситуацию с zip относительно относительных путей.
Вероятно, проще всего открыть терминал и cd
- kit123
; вы должны сделать целевой каталог вашим рабочим каталогом - вы не можете запустить команду из базы вашего домашнего каталога, или она выберет все пути /home/$USER/..
. Если вы используете опцию -j
, она будет удалена все пути, так как на самом деле нет эквивалента опции tar --strip
, с которой можно указывать разные уровни удаления пути.
Поэтому, пожалуйста, перейдите в целевой каталог (kit123
) и введите:
zip -r kit123.zip *
Это рекурсивно (-r
) сохранит все (*
) файлы и каталоги файлов в текущем каталоге (kit123
), и, поскольку относительные пути (-p
) сохраняются автоматически, если отсутствует опция -j
, структура каталога будет такой, как вы пожелаете. Kit123
и подпапки (kitpart1
) с их собственными файлами будут присутствовать:
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Вы можете проверить содержимое zip-файла с помощью unzip -l zipfile.zip
.
Для получения дополнительной информации о других опциях, доступных для zip
, см. man zip
и онлайн-страницу Ubuntu .