hi,
Hogy tudnék több fájlban kicserélni egy szócskát ? Azt látom, hogy a sed parancsot kell használni valahogy így:
sed 's/szocska/masikszocska/g' Shortcut.desktop > Shortcutx.desktop
Azért shortcutx, mert ha ua. a fajl neve, akkor 0 byte-os lesz.Szóval ezt kellene nekem több (100) fajlra alkalmaznom.
Talán csináljak egy fajl listát és onnan olvastassam ki a neveket, és abból egy script ? hujjuj...
köszi
- 852 megtekintés
Hozzászólások
Ha nincsenek "perverz" fájlneveid, akkor például így:
ls | while read a ; do vim -e -s -c '%s/egyikszo/masikszo/ge|wq' $a ; done
Persze az ls helyére tehetsz bármit, ami a feldolgozni kívánt fájlokat kiírja.
- A hozzászóláshoz be kell jelentkezni
köszi, már próbálom is.nekem vissza kell írnom a fájlt.
--
Unfortunately, no one can be told what The Matrix is. You have to see it for yourself.
- A hozzászóláshoz be kell jelentkezni
a könyvtártban lévő első fájlból csinál egy másolatot 0 byte, és megáll....
--
Unfortunately, no one can be told what The Matrix is. You have to see it for yourself.
- A hozzászóláshoz be kell jelentkezni
Akkor valószínűleg valami herélt vim-ed van. Például vim-tiny. Azzal nekem sem megy.
De nálam az első parancs rendszergazdaként az apt-get install vim
- A hozzászóláshoz be kell jelentkezni
aha, megvan miért csinálta.Ahol szóköz van, vagy speciális karakter (amit írtál), ott nem csinálja meg.
okés, mondjuk kiveszem ezeket a fajlokat, hogy tudom megtenni, hogy ne egyesével keljen futtatni ?
--
Unfortunately, no one can be told what The Matrix is. You have to see it for yourself.
- A hozzászóláshoz be kell jelentkezni
A szóköz még nem nagy baj, és talán a többi speciális karakter sem. Ha a $a helyére "$a" -t írsz, menni fog.
- A hozzászóláshoz be kell jelentkezni
Ha a vim nem megy, akkor használjunk egy még klasszikusabb eszközt:
ls | while read a; do echo -e '%s/egyik/masik/g\nwq' | ed -s $a 2>/dev/null ; done
Az a csúnya /dev/null azért van ott, ha olyan fájlra futsz rá, amiben nincs mit lecserélni. A vim-ben ezt az "e" flag megoldja, de az ed egy kicsit régebbi és butább jószág :)
- A hozzászóláshoz be kell jelentkezni
Ha a sed, amit irtal, az egyedi fileokra szepen mukodik, akkor:
for f in *.ezek.*.a.*.fileok ; do
test -f "$f" || continue
d=`dirname "$f"`
t=`mktemp -p $d`
if sed 's/szocska/masikszocska/g' < "$f" > "$t" ; then
ln -f "$t" "$f"
rm "$t"
else
echo "error: sed and/or creation of output file failed."
fi
done
- A hozzászóláshoz be kell jelentkezni
köszönöm a segítségeket.mindjárt kipróbálom ezt is.
--
Unfortunately, no one can be told what The Matrix is. You have to see it for yourself.
- A hozzászóláshoz be kell jelentkezni
köszönöm ez működött.Elrakom a scriptgyüjteménybe :-)
--
Unfortunately, no one can be told what The Matrix is. You have to see it for yourself.
- A hozzászóláshoz be kell jelentkezni
perl -pi -e 's|szocska|masikszocska|g' mappa/fajlok*
Ez uj fajl letrehozasa nelkul irja at.
--
"There are two kinds of people in this world, and you're not one of them."
- A hozzászóláshoz be kell jelentkezni
szerintem inkabb ezt rakd el, mert ez a legjobb megoldas.
t
- A hozzászóláshoz be kell jelentkezni
sed -i 's/szocska/masikszocska/g' *
--
Elméletileg nincs különbség elmélet és gyakorlat között. Gyakorlatilag van.
- A hozzászóláshoz be kell jelentkezni
+1
(bar nem hordozhato)
----
It doesn't take a rocket scientist to program a computer, it takes a programmer.
honlapkészítés
- A hozzászóláshoz be kell jelentkezni
Nézegesd a sed "-i" kapcsolóját...
- A hozzászóláshoz be kell jelentkezni