ИНФОтека

Информационная безопасность

Задача: во всех файлах, соответствующих тому или иному шаблону, произвести замену строки на строку. Самое простое решение:

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

Адрес уведомления об обратной ссылке для этой записи:

//trackback/36

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя Макс

Спасибо, за идею с xargs

Спасибо, за идею с xargs

Аватар пользователя Константин Бояндин

Не за что.

Не за что.

Аватар пользователя Гость

Полезно. спасибо!

Полезно. спасибо!

Аватар пользователя Константин Бояндин

Пригодилось на практике?

...очень уж лапидарный комментарий.

Аватар пользователя Гость

можно разместить эту новость

можно разместить эту новость на моем
блоге ? обратную ссылку я размещу

Аватар пользователя Константин Бояндин

Да, разумеется

...при наличии ссылки размещайте, не спрашивая.