Prva enovrstičnica oz. kako bolje rečti one-liner 🙂
Verjetno moji primeri ne bodo najkrajši, glede na to da za vsako stvar uporabim kar perl, zatorej komaj čakam na komentarje in borbo krajšanja.
Tale bo enostavna, v vseh datotekah v imeniku zamenjati besedilo.
for i in **ls -1** ; do cat $i |perl -ne ‘s/nek_star_string/nov_string/g; print’ >$i.old; mv $i.old $i; done
pri čemer lahko ls -1 zamenjate z ls -1 *.html, če zelite besedilo zamenjati samo v html datotekah.
Če želite narediti enako zamenjavo tudi po vseh podimenikih, ls -1 zamenjate z ustreznim find ukazom, kot recimo find . -name “*.html”.
Toliko zaenkrat, kmalu kaj resnejšega.
S.
Comments
sIMON — 2007-06-10 13:45:16
Me je kolega Ales takoj popravil, prisparal je par bytov:
for i in
ls -1;do sed ‘s/old/new/g’ $i >$i.old;mv $i.old $i;doneSe kdo krajsi ? 🙂
s.
dalibor — 2007-07-01 17:25:04
Danes sem si podaljsal dan za celo uro in se ti zlo zahvaljujem za tale oneliner 🙂
V vseh konfiguracijah je bilo potrebno zamenjat ip 🙂
Aleshiukas — 2007-08-25 14:42:43
Ok, se ena finta. Boljsa od prejsnje je, ker pusti fajle pri miru, ce nimajo
kljucne besede notri. In pa naredi kopijo originala.grep -Rl old * |xargs perl -pi’.bck’ -e ‘s/old/new/g’
Se parametri:
-R – zleze vsepovsod po podrirektorijih
-l – se takoj ustavi, cim najde prvi match v datoteki
-pi’.bck’ – originalnemu fajlu doda .bck koncnino, in skreira novega z original imenom
-e – izvrsi komando za vsako vrstico
Aleshiukas — 2007-08-25 14:44:55
Aja, glede na prejsni. Ce zelite originale drugje, pol je finta v -i flagu
…-pi’archive/*.bck’ …