Tarvitset purkuun ohjelmia
find,
xargs ja
unrar. Kannattaa aluksi tutkailla niiden man-sivuja samalla kun miettii mitä kaikkea pitäisi saada aikaan.
Voit etsiä rar-tiedostoja kansiosta "saapuva" vaikka seuraavasti:
find saapuva/ -type f -iname '*.rar'
Haussa voi käyttää monenlaisia kriteerejä, esim. tiedoston kokoa, päiväystä tai miten syvältä hakemistopuuta kaivellaan. Tuossa haetaan vain tiedostoja ja vain nimen perusteella eikä välitetä onko nimi isolla vai pienellä.
Myös unrar tuntee monia vipuja. Hyödyllinen yhdistelmä voisi olla:
unrar x -o- paketti.rar
Purkaa paketin "paketti.rar" (myös siihen kuuluvat "paketti.r01", jne.). Paketissa olevat hakemistot luodaan ja olemassa olevia tiedostoja ei korvata. Jos haluat että korvataan, vaihda -o+.
Nuo pitää vielä yhdistää xargs ohjelmaa käyttäen:
find saapuva/ -type f -iname '*.rar' -print0 |xargs -0 unrar x -o-
Tuossa siis xargs ajaa parametrina annetun unrar-komennon antaen sen parametreiksi omasta syötteestään luetut find-ohjelman etsimät tiedostonimet.
Vipuja -print0 ja -0 kannattaa käyttää, jos tiedostonimissä voi olla välilyöntejä. Muuten saattaa tapahtua melkein mitä tahansa.
Sitten vielä puretun tiedoston poisto. Tässä on käytettävä apushelliä, koska xargs osaa ajaa vain yhden komennon:
find saapuva/ -type f -iname '*.rar' -print0 |xargs -0 sh -c 'unrar x -o- "$0" && rm "$0"'
Huomaa että shellin parametri on yksinkertaisissa hipsuissa ja unrar ja rm komentojen kaksinkertaisissa. && merkit aiheuttavat että rm-komento ajetaan vain jos unrar-komento onnistuu.
Ps. Olin vähän kahden laitanko tuon viimeisen. Nämä viritykset on yleensä semmoisia vaiheittain testattavia juttuja. Testiajossa on viisasta käyttää 1. kerralla echo komentoa varsinaisen komennon edessä tai paikalla ja ajaa oikeasti vasta kun näyttää järkevältä. Esim.
find saapuva/ -type f -iname '*.rar' -print0 |xargs -0 sh -c 'echo unrar x -o- "$0" && echo rm "$0"'
Ota varmuuskopiot! Älä aja roottina! (ainakaan eka kerralla)