Come faccio a creare le directory in un file zip relative alla directory di destinazione anziché alla mia directory di lavoro


25

Sto chiamando il comando zip da uno script in cui non posso cambiare directory. Devo creare un file zip delle cose data/kit123/dalla directory in cui risiedono i dati, ma voglio che il contenuto dello zip sia solo il contenuto di kit123, con percorsi relativi a kit123.

Questa è la struttura delle directory

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

La mia sceneggiatura viene eseguita in myworkingdir e non può cambiare directory.

Se chiamo

zip -r kit123.zip data/kit123

allora sarà la struttura nel file zip

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

ma voglio che lo sia

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Esiste un'opzione zip che posso usare per raggiungere questo obiettivo? Sembra strano che dovrebbe dipendere dalla mia directory di lavoro

So che non è -j. quello distrugge la struttura all'interno di kit123


Bah, non importa, ho capito come cambiare dir (in Python) Avevo appena avuto autorizzazioni mal organizzate. Mi piacerebbe comunque sapere se zip ha una tale opzione però.
Nathan,

Risposte:


18

Come noterai nei commenti ora sai come cambiare directory con il tuo script, spiegherò la situazione con zip per quanto riguarda i percorsi relativi.

Probabilmente è più semplice per aprire il terminale e cdper kit123; devi rendere la directory di destinazione la tua directory di lavoro - non puoi eseguire il comando dalla base della tua home directory o prenderà tutti i percorsi di /home/$USER/..Se usi l' -jopzione, eliminerà tutti i percorsi, poiché non c'è è davvero un equivalente dell'opzione tar --stripcon cui è possibile specificare diversi livelli di rimozione del percorso.

Quindi, per favore cd nella directory di destinazione ( kit123) e inserire:

zip -r kit123.zip *

Ciò conserverà in modo ricorsivo ( -r) tutti i *file ( ) e le directory dei file nella directory corrente ( kit123), e poiché i percorsi relativi ( -p) vengono conservati automaticamente a meno che non -jsia presente l' opzione, la struttura della directory sarà come desiderato. Kit123e kitpart1saranno presenti sottocartelle ( ) con i propri file:

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Puoi controllare il contenuto del file zip con unzip -l zipfile.zip.

Per ulteriori informazioni sulle altre opzioni disponibili per zip, vedere man zipe la manpage di Ubuntu online .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.