1
Ohjelmointi, palvelimet ja muu edistyneempi käyttö / Vs: Ohjeita shell-skriptaukseen (bash)
« : 26.05.20 - klo:23.25 »Olisiko heittää jotain näppärää scriptin pätkää joka kävisi tiedostot läpi ja siirtäisi vaikka tiedostot joissa on esim. yksi sana/merki/merkkijono johonkin toiseen hakemistoon?Yks mahollisuus:
Koodia: [Valitse]
grep -wilZ 'yksi sana\|merki\|merkkijono' *.txt |xargs -0 -I '{}' mv -v '{}' toinen\ hakemisto/
Decryptattuna:- Ohjelma grep etsii tekstiä annetuista tiedostoista.
- Parametrit -wilZ: -w etsii kokonaisia sanoja, -i ignore case, -l tulostaa vain tiedostojen nimet ja -Z erottimena on nul-merkki eikä rivinvaihto.
- Hakulauseke: 'yksi sana\|merki\|merkkijono' etsii sanoja "yksi sana", "merki" tai "merkkijono". |-merkki erottaa vaihtoehtoiset sanat ja basic-regexp tarvii sen eteen escape koodiksi \-merkin. Koko hoito pitää vielä kääriä yksinkertaisiin hipsuihin ettei shell sörki erikoismerkkejä \ ja |.
- Etsittävät tiedostot: *.txt.
- Löydetyt tiedostot ohjataan (|-putki) xargs ohjelmalle, joka ajaa jokaiselle tiedostolle parametrina annetun komennon (mv).
- Parametri -0 kertoo sille että erottimena on nul-merkki.
- Parametri -I kertoo merkkijonon {}, joka korvataan tiedostonimellä. Taas pitää olla hipsut '' ettei shell sotke.
- Parametrina annettu komento mv siirtää annetun tiedoston kohdehakemistoon.
- Sen parametri -v tulostaa siirretyt tiedostonimet. Ilman sitä tulostuisi vain virheilmoitukset.
- {} paikalle tulee xargs ohjelman toimesta tiedostonimi (jonka mv siirtää).
- Lopussa kohdehakemisto "toinen hakemisto", johon löydetyt tiedostot siirretään. Shell tarvii välilyönnin eteen escape merkin \