LINUX.ORG.RU

Как быстро заменить строку в миллионе файлов .php?

 ,


0

1

Всем привет,

Нужно решение - заменить строчку кода в миллионе файлов .php (строчка во всех файлах одинаковая естественно).

Т.е. есть 1кк+ файлов .php которые содержат небольшую строку, которую нужно заменить везде.

Решений много, но замена идет очень долго. Кто-то может посоветовать самое быстрое решение? Спасибо.

Ответ на: комментарий от no-such-file

find -type f -name '*.php' -print0 | xargs -0 -P 8 sed -i — 's/TEXT-1/TEXT-2/g'

Ты где тут {} нашёл? Без распараллеливания 8 замени на 1 (поток).

Это ко мне. Там был камент, что не сработало, вот я и решил, что не хватает имени файла в качестве аргумента, и предложил такой вариант. Потом проверил, - тот вариант без фигурных скобок у меня нормально работает. Но и мой тоже нормально работает.

Видимо действительно в самом рег. выр. какие-то недопустимые неэкранируемые символы присутствуют. Но чтоб это узнать, топикстартер должен выложить своё регулярное выражение.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

какие-то недопустимые неэкранируемые символы присутствуют

Вангую, что используемый sed не умеет в utf-8. Судя по кракозябле в ошибке.

no-such-file ★★★★★
()
Ответ на: комментарий от aureliano15

Во-первых, всем спасибо за ответы! Продолжаю тестировать предложенные способы, как будут новости - сразу отпишу. Возможно я упустил один знак в

--
.

По поводу самой строки, которую меняем - она не содержит пробелов и каких-либо спец. символов, только набор латинских букв и цифр, пример:

firsttext-0205 надо заменить на новый текст second-text-35070

Merca709
() автор топика
Ответ на: комментарий от Merca709

Странно,

find -type f -name '*.php' -print0 | xargs -0 -P 8 sed -i -- 's/firsttext-0205/second-text-35070/g'
УМВР. Ищите в общем, где-то в команде кривые символы должны быть. Может быть они не отображаются, но попадают при копипасте.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от no-such-file

Все php-файлы (1кк) имеют кодировку UTF-8

Merca709
() автор топика
Ответ на: комментарий от Merca709

На счёт знака --, да он бывает криво копипастится. Но вообще не думаю, что это влияет. Он нужен для того чтобы файлы с именами похожими на опции не воспринимались как опции.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.