Newsgroup: it.comp.macintosh
Titolo: Decomprimere più file .zip da terminale

Hello there.
Vorrei capire come fare per decomprimere più di un file zip alla volta
da terminale, in modo tale che ogni archivio venga decompresso nella sua
cartella di destinazione (e non da quella da dove viene lanciato il
comendo).
Per questo utilizzo il flag -d sul singolo file come segue:
unzip -d directory_di_destinazione file.zip
Ma se le cartelle di destinazione sono ovviamente separate e distinte,
come fare in caso voglia utilizzare una wildcard per diversi archivi
compressi in zip?
TIA
-- 
E adesso anche quando piove,
lo vedi sempre con le spalle al sole,
con un canestro di parole nuove
calpestare nuove aiuole.

 compressi in zip?
Se il nome della directory di destinazione e` in qualche modo deducibile
o ricavabile da quello del file, puoi farlo con un ciclo for di bash.
Se i nomi delle directory di destinazione sono "arbitrari", non vedo
neppure concettualmente come potresti farcela con una wildcard.
Alex

 neppure concettualmente come potresti farcela con una wildcard.
Mi riferivo alla prima opzione. ;)
Come imposteresti lo script?


 TIA
Se ti fai uno scriptino del genere?
#Inizio Codice
for file in `ls *.zip`
do
      unzip $file
done
#Fine Codice
che dici funziona?
-- 
Saluti, Helix - ibook g4 1ghz - 768 Ram
...Ferocior ad bellandum gens...

 che dici funziona?
Questo funziona sicuro (l'ho usato io l'altro giorno):
foreach files (*.zip)
unzip $files
end
Chiaramente devi essere nella directory con dentro i .zip. :)
Avevo anche provato con automator, ma e' troppo complicato da usare...
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 Chiaramente devi essere nella directory con dentro i .zip. :)
In una simile situazione non c'è nessun bisogno di uno script, basta un
unzip *.zip
-- 
Salutandovi indistintamente

 unzip *.zip
Ho scritto quelle righe di codice xchè mi sembra che su shell linux non
funzioni :-). Però ovviamente con mac...Think Easy!!! :-)!!!!


 funzioni :-). Però ovviamente con mac...Think Easy!!! :-)!!!!
Le shell sono shell, non credo esista la shell linux o la shell Mac. Al
limite ci sono differenze tra come le varie shell (tcsh, bash, etc.)
gestiscono i caratteri speciali. Probabilmente ci vuole un backslash
davanti al jolly:


 unzip *.zip
:P


 unzip *.zip
Cosě facendo i file vengono decompressi nella directory da cui si esegue
l'unzip, creando un bordello entropico.
Il quale vorrei evitare facendo finire i file decompressi da ogni
singolo archivio in apposite cartelle (con nomenclatura coerente, come
suggeriva Alex).


 end
foreach files (*.zip)
unzip $files -d $files
end
è giusto sintatticamente?


 unzip $files -d $files
non sono troppo sicuro di cosa succede a creare una directory con un
nome gia' usato (non credo si possa).
Cmq hai provato a unzippare un file? Dovrebbe crearti gia' una cartella
con i file dell'archivi espansi.


 con i file dell'archivi espansi.
E' questo il punto: non sempre la crea.


 E' questo il punto: non sempre la crea.
#!/bin/bash
for file in *.zip
do
newdir=${file%.zip}
mkdir ./$newdir
unzip -qq $file -d $newdir
done
exit
-- 
ciao       | massimo (underscore) c
Massimo C. | (at) despammed (dot) com

 Come imposteresti lo script?
In bash:
for file in *.zip; do unzip -d `basename $file .zip` $file; done
questo ti espande pippo.zip nel directory pippo, e cosi` via.  Se vuoi
ulteriormente decorare il nome del directory in cui espandere basta
giocare un poco con quel basename, magari scrivere una function bash
apposita.  Ma se devi fare cose molto sofisticate conviene passare a
Python o a Perl, lasciando bash a compiti molto semplici come questo (in
teoria puo` fare di piu`, in pratica quando le cose diventano complicate
e` un mal di testa notevole;-).
Alex

 exit
Grazie anche a te.
Se salvo lo script ad esempio come espandi_zip_files.sh lo lancio a mano
da dove risiede fisicamente.
E se voglio averlo disponibile come eseguibile senza specificare il
percorso, in quale directory è il caso di salvarlo?


 e` un mal di testa notevole;-).
Grazie, lo proverň a breve! ;)


 for file in *.zip; do unzip -d `basename $file .zip` $file; done
Questo in una sola riga funziona alla grande. :P


 l'unzip, creando un bordello entropico.
Lo so, ma anche lo script segnalato faceva lo stesso.
-- 
Salutandovi indistintamente

 percorso, in quale directory è il caso di salvarlo?
In una directory che stanel PATH, magari /usr/bin oppure in una directory creata 
ad hoc che poi aggiungerai al PATH.


 Lo so, ma anche lo script segnalato faceva lo stesso.
Infatti leggendolo ho capito che non s'era capito... ;)


 creata ad hoc che poi aggiungerai al PATH.
L'ho infilato in /opt/local/bin/ ... ;)
Anche se non č un binario e sarebbe piů opportuno copiarlo ad esempio in
/opt/local/lib/ o simile.


 /opt/local/lib/ o simile.
Avevo un po' di tempo e ho fatto 31. :-)
Per evitare la linea di comando ho modificato lo script di prima e l'ho
dato in pasto a questo [1]. Il risultato è un droplet scaricabile da
qui [2] su cui trascinare una serie di archivi .zip da decomprimere
(ciascuno nella propria cartella).
Puoi metterlo in Applicazioni e trascinarlo nel dock per buttarvi gli
archivi ovunque si trovino oppure tenerlo in una cartella di lavoro in
cui copierai momentaneamente gli archivi da trattare.
HTH
[1] 
http://sveinbjorn.sytes.net/platypus
[2] 
http://www.massimo.biz/download/unzip_all.app.dmg

 (ciascuno nella propria cartella).
Grazie. ;)
Comunque principalmente mi interessava la sintassi da terminale, perché
a volte mi fa piů comodo operare da lě, e volevo evitare il lentissimo
(ad aprirsi) Stuffit Expander.


 cui copierai momentaneamente gli archivi da trattare.
Provata, č velocissima. ;)
Piů di StuffIt Expander sicuramente.
Direi che potresti chiedere di pubblicarla su 
www.faqintosh.com
.
