Как еще я могу заменить несколько строк через терминал в приложении Rails? - PullRequest
1 голос
/ 06 августа 2010

Есть ли альтернативный способ выполнить следующую однострочную замену текста во всех файлах в приложении Rails?

perl -pi -e 's/replaceme/thereplacement/g' $(find . -type f)

Perl жалуется, что если я включаю RAILS_ROOT, файлов слишком много, но это работает для подкаталогов.

1 Ответ

1 голос
/ 06 августа 2010

Я обычно использую следующее для выполнения пакетной замены - например, заменяю все экземпляры «SomethingOld» на «SomethingNew».Опция -Z для grep и pipe к xargs с опцией -0 необходимы для работы с именами файлов с пробелами.

grep -rlZ 'SomethingOld' * | xargs -0 sed -i '' -e 's/SomethingOld/SomethingNew/g'

Запустите его из корневого каталога, в котором вы хотите выполнить пакетзамена и он будет рекурсивно перемещаться по всем подкаталогам. Имейте в виду, что это выполняет оперативную замену, поэтому сначала сделайте резервную копию исходных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...