come specificare la directory di destinazione decomprimere


21

Esiste un'opzione sul comando zip di Linux in modo tale da poter codificare la directory di destinazione in cui decomprime. Ad esempio, vorrei comprimere i file ./mydir in myzipfile.zip ma voglio che il comando unzip crei una directory specifica "projx" ed espanda i file che si trovavano sotto ./mydir.

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

Risposte:


18

Non esiste tale opzione, almeno non per Info-ZIP. Devi creare tu stesso una directory projx , spostare / copiare i tuoi file in essa e poi passarla a zip.

Se la directory già esiste poi basta passare l'opzione -dper unzipspecificare la directory di destinazione per l'estrazione.


4

Per farlo c'è un altro modo. È possibile appiattire l'intero contenuto del file zip utilizzando il seguente metodo. La directory di destinazione è " projx " ed eseguire il comando seguente.

cd /projx && unzip -j /path/to/myzipfile.zip

L'opzione -j si chiama "percorsi spazzatura" e scarica ogni file nella directory corrente invece di estrarre qualsiasi struttura di directory.


0

Non conosco un'opzione specifica della riga di comando, ma puoi utilizzare i seguenti comandi per raggiungere il tuo obiettivo:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

Il primo comando crea un collegamento simbolico, in modo da poter accedere ai file mydiranche tramite projx. Quindi, utilizzando Info-ZIP(testato con la versione 2.31) il collegamento simbolico viene rimosso (questo è il valore predefinito, a meno che non venga specificato -y) e i file vengono memorizzati in modo ricorsivo:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Vedete, anche il nome della cartella è memorizzato nel file, quindi all'estrazione projxviene creata la directory .

Tuttavia, non riesco a pensare alla possibilità di memorizzare percorsi assoluti, ma questa è comunque una cattiva idea.


Il percorso assoluto funziona solo su MacOS specificando l'opzione -jj. Su altri sistemi operativi -jè supportata solo l'opzione (ed -jjè interpretata come -j) che rimuove qualsiasi percorso iniziale e porta quindi al contrario (un design molto intelligente ...).
scai,
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.