Як зробити каталоги в zip-файлі відносно цільового каталогу замість робочого каталогу


25

Я викликаю команду 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. що руйнує структуру в комплекті123


Ба, ніколи не знаю, як я зрозумів, як змінити dir (у Python), я просто мав погано організовані дозволи. Я все ж хотів би знати, чи є в zip такий варіант.
Натан

Відповіді:


18

Як ви зазначаєте в коментарях, які ви тепер знаєте, як змінити каталог зі своїм сценарієм, я поясню ситуацію із zip щодо відносних шляхів.

Це, ймовірно , простіше за все відкрити термінал і cdдо kit123; ви повинні зробити цільовий каталог своїм робочим каталогом - ви не можете запустити команду з основи домашнього каталогу, або вона підбере всі шляхи. /home/$USER/..Якщо ви скористаєтесь цією -jопцією, вона викреслить усі шляхи, як немає насправді еквівалент опції tar, за --stripдопомогою якої можна вказати різні рівні видалення шляху.

Тому, будь ласка, cd до вашого цільового каталогу ( 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 в Інтернеті .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.