@anriko

Как сделать замену фразы в файле в разных папках?

фразу $GLOBALS["SLIDER_TOP"] = 17258; на $GLOBALS["PREIM_TOP"] = 3670; ?
на всех поддоменах есть папка stolbiki-parkovochnye в ней index.php как во всех папках файле index.php сделать замену?
вот так нахожу
find ./*/public_html/stolbiki-parkovochnye -name "index.php" | а как тут сделать замену в файле ?
или вот правильно составил?
grep -irl '$GLOBALS["SLIDER_TOP"] = 17258;' ./ekb/public_html | xargs -IX sed -i 's|$GLOBALS["SLIDER_TOP"] = 17258;|$GLOBALS["PREIM_TOP"] = 3670; |' X
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
В начале дочитай до конца
find  ./*/public_html/stolbiki-parkovochnye -type f -name 'index.php' -exec sed -i 's/\x24GLOBALS\[\x22SLIDER_TOP\x22\] = 17258\x3B/GLOBALS["PREIM_TOP"] = 3670;/g' {} \;


./*/public_html/stolbiki-parkovochnye - от какой папки
-type f файл
-name 'index.php'- только индекс пхп
-exec- выполнить с найденым
sed -i 's/было/стало/g' - заенить в потоке и перезаписать в файле все найденые соответсвия
'\x24 и \x22 и \x3B это я писал тут
{}- то чудо которое ты искал это тот аргумент что нашел файнд он подставляется ( часть exec)
\;- закрываем экзэк
результат
cat index.php
GLOBALS["PREIM_TOP"] = 3670;

Если хочешь посмотреть на результат но не вносить изменения вместо sed -i поменяй на sed -e

Поскольку сед опасен при неопытном использование было бы не кисло сделать бэкап этих файлов с сохранением структуры каталога.
mkdir ./tmp/backup
find./*/public_html/stolbiki-parkovochnye -type f -name 'index.php' -print0 | xargs -0 cp --parents --target-directory ./tmp/backup

спасибо кэп, очень развернутый ответ я прям аж не ожидал -> "вопрос решен"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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