2012-06-28 14 views
9
zip -r 1.zip /home/username/the_folder 

A qui, quando ho decomprimere 1.zip, creerà /home/username/the_folder, da qualsiasi cartella sto Unzipping da.Zip affermando percorsi assoluti, ma mantenendo solo una parte di essi

Come faccio zip, indicando i percorsi assoluti completi, ma facendo in modo che lo zip contenga solo la struttura della cartella a partire da, in questo caso ad esempio, /home/username?

In questo modo potrei essere in qualsiasi percorso volessi, decomprimere e creerebbe solo the_folder e non /home/username/the_folder.

risposta

9

Utilizzare questo comando:

cd path_under_folder_to_zip && \ 
zip -r 1.zip folder_to_zip >/dev/null && \ 
mv 1.zip my_current_path 
+0

cd path_under_folder_to_zip && zip -r my_current_path/1.zip folder_to_zip>/dev/null –

+0

Funziona alla grande su macOS :) Grazie. –

5

Utilizzare il percorso relativo quando si specifica il file da zip.

cd /home/username 
zip -r 1.zip ./the_folder 

Poi, quando si decomprime, sarà un percorso relativo a partire da qualunque cartella siete in quando decompressione.

+0

Egli vuole essere in grado di utilizzare percorso assoluto. Si prega di notare "qualunque percorso volessi". Anche se quello che stai dicendo ha un senso. –

1
  1. voce dell'Elenco

ne dite di questo:

function zipExtraFolder { 
    if [ $# -lt 2 ]; then 
     echo "provide at least two arguments" 
     return 
    fi 
    folder=$2 
    mkdir del 
    echo cp -r `dirname $folder` del 
    cd del 
    echo zip -r ../$1 . 
    cd - 
    rm -rf del 
} 

Definire cui sopra come una funzione di shell nel vostro .bashrc e si dovrebbe essere in grado di utilizzare ogni volta che si desidera. L'utilizzo sarà come di seguito.

zipExtraFolder 1.zip /home/username/the_folder 
+0

Non riesco davvero a leggere quel codice e questo non causerà problemi quando comincio a creare comandi zip più complessi? –

-1

Basta utilizzare l'opzione -j, lavora su OSX, non so su Linux.

zip -j -r 1.zip /home/username/the_folder

+0

ottengo un errore, apparentemente perché ci sono due istanze di un file con lo stesso nome all'interno di quella cartella. Anche se sono in diverse sottocartelle. –

+6

Avevo dimenticato, l'opzione '-j' non è pratica quando si usa l'opzione' -r', perché comprime tutti i file nella cartella radice senza la struttura delle cartelle. – jackjr300

+0

se '-j' non funziona per il pagamento [questa risposta] (http://superuser.com/a/119661/45285) – czerasz

Problemi correlati