Strona 1 z 1

[+] zmiana tekstu we wszystkich plikach w katalogu - sed

: 22 czerwca 2010, 10:42
autor: sector
Witam mam maly problem.

Potrzebuje napisac skrypt, ktory bedzie mi zmienial jakis tekst na inny. O ile na pliku to nie jest problem, to potrzebuje to zrobic tak, aby zmienial te wartosci we wszystkich plikach w danym katalogu.

Czy starczy uzyc sed czy musze czegos jeszcze uzyc? Prosilbym o male naswietlenie tematu a z reszta powinienem porawdzic sobie sam.

: 22 czerwca 2010, 21:01
autor: piter

Kod: Zaznacz cały

sed -i 's/costam/cosinnego/' *

: 22 czerwca 2010, 22:21
autor: sector
wielkie dzieki, obadam!

: 31 lipca 2010, 20:29
autor: sfp
Możesz też użyć 'for' w Bash - to Ci pozwoli ciekawiej filtrować pliki do obróbki:
proste filtrowanie można uzyskać tak:

Kod: Zaznacz cały

sed 's/stare/nowe/g' rozdzial*.txt
bardziej ogólna jest:

Kod: Zaznacz cały

for plik in $( ls ); do
sed 's/stare/nowe/g' $plik
done
W miejsce ls możesz wstawić cokolwiek, np. find z licznymi opcjami:

Kod: Zaznacz cały

find sciezka -name rozdzial\*.txt
wyszuka wszystkie pliki rozdzial*.txt we wszystkich podkatalogach katalogu wskazanego przez 'sciezka'.
Krótkie wprowadzenie do pisania skryptów masz np. tu: http://www.ournet.pl/kursbasha/main.html
Sprawdź tam szczegóły konstrukcji, bo piszę z pamięci i mogłem cos zgubić.