Kirjoittaja Aihe: Zippi-pakettien purkaminen komentoriviltä [ratkaistu]  (Luettu 2041 kertaa)

hma

  • Käyttäjä
  • Viestejä: 22
    • Profiili
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.

« Viimeksi muokattu: 12.11.10 - klo:22.51 kirjoittanut hma »

CVTP

  • Käyttäjä
  • Viestejä: 192
  • Artif.sweeteners are used not by me, nor my family
    • Profiili
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #1 : 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.
Ubuntu14041+CrunchB11/Lenovo 510i i5
FreeBSD 9.3/Dell D600
OS X Leopard/MacMini PPC
FreeBSD9.3/ASUS 701 4G
Android 4.X.X. NEXUS ASUS 7"
Android 4.X.X. LenovoA1000 7"
FreeBSD 10/Lenovo Thinkcenter M55

Luurit erikseen..

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #2 : 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

SuperOscar

  • Käyttäjä
  • Viestejä: 4000
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #3 : 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ä.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #4 : 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.


SuperOscar

  • Käyttäjä
  • Viestejä: 4000
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #5 : 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
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

hma

  • Käyttäjä
  • Viestejä: 22
    • Profiili
Vs: Zippi-pakettien purkaminen komentoriviltä
« Vastaus #6 : 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)