Пропустить навигацию.

Как заменить подсроку во всех файлах по ssh

Иногда при переносе сайтов требуется подправить пути в конфигах (и не только), это часто встречается со старыми сайтами, которые писали не опытные веб разработчики. К счастью, сейчас вы можете исправить всё в кратчайшее время, не отредактировав в ручную ни один файл.

Для замены всех подстрок во всех файлах в текущей директории нам понадобятся find и xargs.

Для примера возьмём ситуацию, когда переносим сайт на новый сервер с другими настройками вебсервера и нужно заменить старый путь к корню сайта «/home/site/data/www/site.ru» на новый «/var/www/sites/site.ru», не забываем экранировать слэши:

find . -name "*.php" -print | xargs perl -pi -e's/\/home\/site\/data\/www\/site.ru/\/var\/www\/sites\/site.ru/ig' *.php

Чтобы вы понимали конструкцию, часть с абракадаброй можно представить схематично в виде 's/a/b/ig', где строка a заменяется на строку b.

ps. Способ решает проблему с кривонаписанными сайтами, но временно. Лучше избегать таких сайтов или переписывать нормально работу с путями.