Czy masz na myśli wyszukiwanie i zamianę ciągu we wszystkich plikach dopasowanych przez grep?
perl -p -i -e 's/oldstring/newstring/g' `grep -ril searchpattern *`
Edytować
Ponieważ wydaje się to dość popularne pytanie, pomyślałem, że zaktualizuję.
Obecnie najczęściej używam, ack-grep
ponieważ jest bardziej przyjazny dla użytkownika. Więc powyższe polecenie brzmiałoby:
perl -p -i -e 's/old/new/g' `ack -l searchpattern`
Aby obsłużyć białe znaki w nazwach plików, możesz uruchomić:
ack --print0 -l searchpattern | xargs -0 perl -p -i -e 's/old/new/g'
możesz zrobić więcej ack-grep
. Załóżmy, że chcesz ograniczyć wyszukiwanie tylko do plików HTML:
ack --print0 --html -l searchpattern | xargs -0 perl -p -i -e 's/old/new/g'
A jeśli biała przestrzeń nie jest problemem, jest jeszcze krótsza:
perl -p -i -e 's/old/new/g' `ack -l --html searchpattern`
perl -p -i -e 's/old/new/g' `ack -f --html`
Can't open Untitled: No such file or directory, <> line 5
podczas próby „Untitled Folder / file.txt”.