Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: 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:
/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:
kk-raportti.pdf
tunnit_jaakko.xls
kalle.xls
pekka_joulukuu.xls
budjetti.doc
muistiinpanot.txt
Vain nuo .xls - tiedostot tarvitaan.
-
Hyvä kysymys! Sori etten tiedä vastausta, mutta laitan aiheen seurantaan, koska vaimon odottaessa toista lasta on ajankäyttö kortilla, mutta komentorivi-taiteilu kiinnostaa.
-
Vain nuo .xls - tiedostot tarvitaan.
Yksittäisesti .zip saa näin:
unzip joku.zip *.xls
Tämä etsii kaikki zipit hakemistosta dir/ ja jokaisesta purkaa *.xls: siihen hakemistoon
josta se ajetaan.
for i in `find dir/ -name *.zip`; do zip $i *.xls; done
-
Yksittäisesti .zip saa näin:
unzip joku.zip *.xls
Ei vaan:
unzip joku.zip \*.xls
Takakeno estää shelliä laventamasta tähteä.
-
unzip joku.zip \*.xls
Takakeno estää shelliä laventamasta tähteä.
Toimi kyllä kun kokeilin omassa bash:ssa ilman \ ihan oikein.
-
Toimi kyllä kun kokeilin omassa bash:ssa ilman \ ihan oikein.
Niinpä näkyy... Bash ilmeisesti päästää läpi. Zsh sanoo näin:
tn@gadamer [~/Tilap/koe]$ unzip koe.zip *.doc
zsh: no matches found: *.doc
-
Tämä etsii kaikki zipit hakemistosta dir/ ja jokaisesta purkaa *.xls: siihen hakemistoon
josta se ajetaan.
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)
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)