Вы имеете в виду поиск и замену строки во всех файлах, соответствующих grep?
perl -p -i -e 's/oldstring/newstring/g' `grep -ril searchpattern *`
Редактировать
Так как этот вопрос кажется довольно популярным, подумал, что я обновлю.
В настоящее время я в основном использую ack-grep
, поскольку это более удобно для пользователя. Таким образом, приведенная выше команда будет:
perl -p -i -e 's/old/new/g' `ack -l searchpattern`
Для обработки пробелов в именах файлов вы можете запустить:
ack --print0 -l searchpattern | xargs -0 perl -p -i -e 's/old/new/g'
вы можете сделать больше с ack-grep
. Допустим, вы хотите ограничить поиск только файлами HTML:
ack --print0 --html -l searchpattern | xargs -0 perl -p -i -e 's/old/new/g'
А если пробел не проблема, он еще короче:
perl -p -i -e 's/old/new/g' `ack -l --html searchpattern`
perl -p -i -e 's/old/new/g' `ack -f --html` # will match all html files