Массовая замена текста в файлах

У Курячего сегодня была интересная, но совершенно бесполезная лекция о лицензировании. Не досмотрел, пошёл искать что-то еще. Набрёл на яндекс.китовскую восхитительнейшую лекцию на которой прямо у меня на глазах Виктор Ашик собрал из кусочков ArchLinux.

Еще разобрался сегодня с поиском и заменой текста в файлах, когда нужно было поменять везде на сайте телефон.

find -type f -name *.tpl -exec sed -i -r 's/73472463856/73472466758/g' {} ;
find -type f -name *.tpl -exec sed -i -r 's/246-38-56/266-67-58/g' {} ;

Пояснение для себя на будущее:
find -type f -name *.tpl -exec sed -i -r ‘s/чтоменяем/начто/g’ {} ;
(не копируй отсюда — WP извращает кавычки) копирую отсюда:

find -type f -name *.tpl -exec sed -i -r 's/чтоменяем/начто/g' {} ;

Не совсем понимаю что делает аттрибут -i у sed. Кажется он говорит, что вносим изменения прямо в файле, не создавая его копии.
-r значит что использует регулярные выражения.
Не понимаю что значат s/ и /g в начале и в конце строки. Man прочитал. Русский ман прочитал. Все равно не понял. Что-то связанное с регулярками…
Не понимаю что за ерунда в конце {} ; надо поэкспериментировать на учебном сервере, но пока было не до экспериментов.
Надо выучить регекспы и пройти по ним какой-то проверочный тест.

p.s. задумался что Arch это не Арч, как я привык, а возможно Арх

Массовая замена текста в файлах: 3 комментария

  1. {} подставляет имя файла, которое нашел find
    ; это экранированная ; которая тоже относится к find
    мне больше импонирует немного другой вариант, он нагляднее и проще для запоминания, но имеет лимит на количество файлов к сожалению

    sed -i -e ‘s/чтоменяем/начто/g’ $(find -type f -name *.tpl)

    можно также написать простенький однострочник на баше в таком стиле

    find -type f -name *.tpl | while read file; do; sed -i -e ‘s/чтоменяем/начто/g’ $file; done

      1. Лимит на количество символов в аргументах. На разных ОС и интерпретаторах он разный. Может быть 32 тысячи, может быть 2 миллиона. Проверяется с помощью getconf ARG_MAX.
        Про s и g читай в мануалах про регулярки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *