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

Bei hier zu halten, wenn ich 1.zip entpacken, wird es /home/username/the_folder erstellen, aus welchem ​​Ordner i aus bin unzipping.Zip Angabe absolute Pfade, aber ein Teil von ihnen nur

Wie zip, unter Angabe der vollständigen absoluten Pfade, aber machen die Zip nur die Ordnerstruktur ab, in diesem Fall zum Beispiel /home/username?

So könnte ich auf jedem Pfad sein, den ich wollte, entpacken und es würde nur erstellen the_folder, und nicht /home/username/the_folder.

Antwort

9

Verwenden Sie diesen Befehl:

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

cd pfad_unter_ordner_zu_zip && zip -r mein_aktueller_pfad/1.zip ordner_to_zip>/dev/null –

+0

Funktioniert super auf macOS :) Danke. –

5

Verwenden Sie den relativen Pfad, wenn Sie die zu komprimierende Datei angeben.

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

Dann, wenn Sie dekomprimieren, wird es ein relativer Pfad zu je nachdem, welcher Ordner in Sie beginnen, wenn unzipping.

+0

Er will in der Lage sein absoluten Pfad zu verwenden. Bitte beachten Sie "welchen Weg auch immer ich wollte". Obwohl das, was du sagst, Sinn ergibt. –

1
  1. Liste item

Wie wäre es damit:

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 
} 

in .bashrc oben als Shell-Funktion definieren, und Sie sollten es nutzen können, wann immer Sie wollen. Die Verwendung wird wie folgt sein.

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

Ich kann diesen Code nicht wirklich lesen, und wird dies nicht zu Problemen führen, wenn ich komplexere zip-Befehle erstelle? –

-1

Verwenden Sie einfach die -j Option, arbeitet auf OSX, ich weiß nicht, über Linux.

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

+0

Ich bekomme einen Fehler, anscheinend, weil es zwei Instanzen einer Datei mit demselben Namen in diesem Ordner gibt. Obwohl sie sich in verschiedenen Unterordnern befinden. –

+6

Ich hatte vergessen, die Option '-j' ist nicht praktikabel, wenn sie mit der Option' -r' verwendet wird, da sie alle Dateien im Stammordner ohne die Ordnerstruktur komprimiert. – jackjr300

+0

Wenn '-j' nicht für dich funktioniert, checkback [diese Antwort] (http://superuser.com/a/119661/45285) – czerasz

Verwandte Themen