@Merca709

Как сделать автозамену строчки в большом кол-ве файлов .php на Linux?

Подскажите, пожалуйста, синтаксис Линукс команды, чтобы можно было сделать автозамену строчки (search and replace) в большом количестве php-файлов, расположенных в одной папке (файлов около миллиона). Вариантов много, но нужен самый быстрый.

Пробовали:
time find ./ -type f -exec sed -i 's/TEXT-1/TEXT-2/g' {} \;
- работает, но работает медленно (миллион файлов неделю перебирал и до конца не довел)

Подсказали другую команду:
find -type f -name '*.php' -print0 | xargs -0 -P 8 sed -i -- 's/TEXT-1/TEXT-2/g'
- которая должна справиться быстро, но не работает, спустя время выдает ошибки:

sed: -e expression #1, char 1: unknown command: `�'


Подскажите, пожалуйста, правильный синтаксис команды, чтобы справилась с задачей. Спасибо.
  • Вопрос задан
  • 433 просмотра
Решения вопроса 1
@Merca709 Автор вопроса
Разобрался,

find -type f -name '*.php' -print0 | xargs -0 -P 8 sed -i -- 's/TEXT1/TEXT2/g'


В итоге - рабочее решение, может кому пригодится
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Ответ написан
Комментировать
@younghacker
Что будет если добавить -z для sed ?

`-z'
`--null-data'
`--zero-terminated'
     Treat the input as a set of lines, each terminated by a zero byte
     (the ASCII `NUL' character) instead of a newline.  This option can
     be used with commands like `sort -z' and `find -print0' to process
     arbitrary file names.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы