Задача: во всех файлах, соответствующих тому или иному шаблону, произвести замену строки на строку. Самое простое решение:
find . -type f -name "pattern" | xargs perl -pi~ -e "s/SEARCH/REPLACE/ig"
Пояснение: найти все файлы, в данном каталоге и всех подкаталогах, удовлетворяющие шаблону "pattern", после чего произвести замену в соответствии с переданным регулярным выражением (поиск, игнорирующий регистр), причём исходный файл сохранить, приписав к его имени тильду ('~'). Поиск ведётся по умолчанию и во всех подкаталогах.
Пример: заменить во всех .html файлах все вхождения example.com на example.net
find . -type f -name "*.html" | xargs perl -pi~ -e "s/example\.com/example\.net/ig"
Любители sed могут использовать его вместо относительно тяжеловесного perl.
А ещё знатоки Perl могут попробоватьс ходу сказать, что делает вот эта команда:
perl -i~ -p00e0 file.ext
Адрес уведомления об обратной ссылке для этой записи:
Блог в СИНДИКАТе | Проза жизни | ИНФОтека | де Мотиватор | Люди, имена и блоги
Если явным образом не выражено иначе, все работы на данном сайте доступны по лицензии
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Перевод текста упомянутой выше лицензии на русский язык
© 2008-2012 Константин Бояндин



Комментарии
Спасибо, за идею с xargs
Спасибо, за идею с xargs
Не за что.
Не за что.
Полезно. спасибо!
Полезно. спасибо!
Пригодилось на практике?
...очень уж лапидарный комментарий.
можно разместить эту новость
можно разместить эту новость на моем
блоге ? обратную ссылку я размещу
Да, разумеется
...при наличии ссылки размещайте, не спрашивая.
Отправить комментарий