Как сделать каталоги в zip-файле относительно целевого каталога вместо моего рабочего каталога

Я вызываю команду 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

25
задан 12 November 2012 в 08:25

1 ответ

Как вы заметили в комментариях, теперь вы знаете, как изменить каталог с помощью вашего скрипта, я объясню ситуацию с 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 .

0
ответ дан 12 November 2012 в 08:25

Другие вопросы по тегам:

Похожие вопросы: