Sziasztok
tudna nekem mondani valaki egy olyna kis scriptet amivel egy mappában lévő összes fájlban kicserél egy stringet egy másikra.
pl ha a fájlokban ahárhol szerepel hogy kelkáposztafőzelék és a scriptbe azt írom hogy a káposztát cserélje bimbóra akkor minden fájlban kelbibmófőzelék legyek
Köszi szépen
- 1629 megtekintés
Hozzászólások
man bash
man sed
man 7 regex
bashból a filenév glob kell neked
a for ciklus
sedből az s/// parancs
de ha nem szeretnél okosdni, csak a megoldás kell:
mit="qqriq";mire=torokcsaszar; for file in * do; \
sed "s/$mit/$mire/g" ; \
done
---
Reactor error - core dumped!
- A hozzászóláshoz be kell jelentkezni
Azért igazán kipróbálhattad volna, már csak mert erre így csak egykori tanáromat tudnám idézni, miszerint "kolléga, ez még nem gól, csak kapufa". Valószínűleg erre gondoltál:
mit=qqriq mire=torokcsaszar for file in *; do sed -i "s/$mit/$mire/g" $file; done
Azaz pl. a sed-nek érdemes megmondani, hogy milyen file-on is kell dolgoznia, illetőleg a -i sem árt, már csak hogy ne az stdout-ra írja az eredményt, és ez még mindig érdekes eredményt adna, ha a cserélendő ill. behelyettesítendő szövegben van dollár-, per-, és-, felkiáltójel...
Amúgy ha nem kell rekurzív módon cserélni, akkor inkább ezt javasolnám:
sed -i 's/qqriq/torokcsaszar/g' *
ha pedig rekurzíve is kell, akkor:
find . -type f -exec sed -i 's/qqriq/torokcsaszar/g' {} \;
- A hozzászóláshoz be kell jelentkezni
egyfelől igazadvan, de miért próbáljak ki bármit is, ha nekem nincs rá szükségem, neki van. majd legalább elolvassa a manpédzset, úh. gyorsan rontsad el te is a hozzászólásodban :)
és ahogy tanáraim mondanák: csak ellenőriztem, hogy figyel-e!
---
Reactor error - core dumped!
- A hozzászóláshoz be kell jelentkezni
hálás köszönetem..
azért nme a mant néztem mert mire kitökölném, elmegy a nap és holnap csak 2 zh.
- A hozzászóláshoz be kell jelentkezni
Nem kell ide sed, tudja ezt a bash maga:
find . -type f|while read x;
do mv "$x" "${x//kaposzta/bimbo}";
done
Ha a kapcsoszárójelen belül a //-t /-re cseréled, akkor csak az első előfordulást cseréli, így mindet.
Üdv!
________________________________________________
Debian 4.0 - linux-2.6.21-smp-cfs - KDE 3.5.5
- A hozzászóláshoz be kell jelentkezni
he? :-)
"egy mappában lévő összes fájlban kicserél egy stringet egy másikra"
Szóval nem fájlnévről volt szó.
Szabi
- A hozzászóláshoz be kell jelentkezni
Ott a pont. Nehéz ez a magyar nyelv:)
________________________________________________
Debian 4.0 - linux-2.6.21-smp-cfs - KDE 3.5.5
- A hozzászóláshoz be kell jelentkezni
find + perl
perl -pi -e 's/foo/bar'
t
- A hozzászóláshoz be kell jelentkezni
Jaj-jaj ez így syntax error lesz!
perl -pi -e 's/foo/bar/'
- A hozzászóláshoz be kell jelentkezni
csak hintet adtam, nem a megoldast.
man find segit
t
- A hozzászóláshoz be kell jelentkezni