Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: hma - 11.11.10 - klo:13.44

Otsikko: Zippi-pakettien purkaminen komentoriviltä [ratkaistu]
Kirjoitti: hma - 11.11.10 - klo:13.44
Vähän tyhmä kysymys, mutta miten onnistuu Ubuntussa komentoriviltä etsiä ja purkaa zippipaketeista vain tiettyä tyypppiä olevat tiedostot?
Lisäksi zippipaketit sijaitsevat eri kansioissa tietyn polun päässä, tässä esimerkissä /raportit/purettavat/

Esimerkiksi:
Koodia: [Valitse]
/raportit/purettavat/2010/12.zip
/raportit/purettavat/2010/11.zip
/raportit/purettavat/2010/10.zip
...jne

/raportit/purettavat/2009/tammikuu.zip
/raportit/purettavat/2009/helmikuu.zip
...jne

/raportit/purettavat/2008/12_2008.zip
/raportit/purettavat/2008/11_2008.zip
/raportit/purettavat/2008/10_2008.zip
...jne

/raportit/purettavat/2007/tammi_07.zip
/raportit/purettavat/2007/helmi_07.zip
/raportit/purettavat/2007/maalis_07.zip
...jne


Jokainen zippi-paketti sisältää myös "turhia" tiedostoja, esimerkiksi:

12.zip pitää sisällään:
Koodia: [Valitse]
kk-raportti.pdf
tunnit_jaakko.xls
kalle.xls
pekka_joulukuu.xls
budjetti.doc
muistiinpanot.txt

Vain nuo .xls - tiedostot tarvitaan.

Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: CVTP - 11.11.10 - klo:13.49
Hyvä kysymys! Sori etten tiedä vastausta, mutta laitan aiheen seurantaan, koska vaimon odottaessa toista lasta on ajankäyttö kortilla, mutta komentorivi-taiteilu kiinnostaa.
Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: _Pete_ - 11.11.10 - klo:14.13

Vain nuo .xls - tiedostot tarvitaan.


Yksittäisesti .zip saa näin:

Koodia: [Valitse]
unzip joku.zip *.xls

Tämä etsii kaikki zipit hakemistosta dir/ ja jokaisesta purkaa *.xls: siihen hakemistoon
josta se ajetaan.

Koodia: [Valitse]
for i in `find dir/ -name *.zip`; do zip $i *.xls; done
Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: SuperOscar - 11.11.10 - klo:14.23
Yksittäisesti .zip saa näin:

Koodia: [Valitse]
unzip joku.zip *.xls

Ei vaan:

Koodia: [Valitse]
unzip joku.zip \*.xls
Takakeno estää shelliä laventamasta tähteä.
Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: _Pete_ - 11.11.10 - klo:14.39

Koodia: [Valitse]
unzip joku.zip \*.xls
Takakeno estää shelliä laventamasta tähteä.

Toimi kyllä kun kokeilin omassa bash:ssa ilman \ ihan oikein.

Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: SuperOscar - 11.11.10 - klo:14.56
Toimi kyllä kun kokeilin omassa bash:ssa ilman \ ihan oikein.

Niinpä näkyy... Bash ilmeisesti päästää läpi. Zsh sanoo näin:

Koodia: [Valitse]
tn@gadamer [~/Tilap/koe]$ unzip koe.zip *.doc
zsh: no matches found: *.doc
Otsikko: Vs: Zippi-pakettien purkaminen komentoriviltä
Kirjoitti: hma - 12.11.10 - klo:22.49

Tämä etsii kaikki zipit hakemistosta dir/ ja jokaisesta purkaa *.xls: siihen hakemistoon
josta se ajetaan.

Koodia: [Valitse]
for i in `find dir/ -name *.zip`; do zip $i *.xls; done


Suuri kiitos! Tämä ratkaisi ongelman. Minun tarvitsi lisäksi laittaa tuo SuperOscarin ehdottama takakeno mukaan ja muuttaa zip unzipiksi. (ja lisätä pari unzipin optiota joiden tarvetta en alkuperäisessä kysymyksessä tuonut esiin)
Koodia: [Valitse]
for i in `find /home/hma/raportit/purettavat/ -name *.zip`; do unzip -j -C $i \*.xls; done
Tuo osasi käydä tutkimassa kaikki alikansiotkin, kuten pitikin.

ps. onpa muuten sipevä tämä linuxin systeemi, kun tuossa komentorivillä voi suoraan for-silmukan suorittaa...  8)