Нам нужен сценарий оболочки для поиска и замены фрагмента внедренного кода во всех файлах index.php в папке / home.
Вы можете сделать это с помощью sed. Вот хороший учебник об этом. Это может быть так просто, как find /home/user -iname index.php -exec sed -i s/<piece of code to find/<replace with that>/ {} \;
Я предлагаю вам сделать резервную копию, прежде чем делать это и запустить несколько тестов, чтобы убедиться, что все работает нормально. Помните, что элементы между / / являются регулярными выражениями, и в зависимости от его формата вы можете закончить сопоставление большего количества элементов, которые вам нужны. Как я уже сказал, перед запуском проверьте свои «живые» файлы.
РЕДАКТИРОВАТЬ: исправлена команда find, спасибо rems
for file in $(find /home/user -iname index.php)
do
echo "replacing in file $file ..."
sed -i 's/<piece of code to find>/<replace with that>/g' $file
done
Если хочешь ТЕСТ сначала вы можете поместить его во временный файл, проверить, правильно ли он, а затем перезаписать исходный файл:
for file in $(find /home/user -iname index.php)
do
echo "reading from $file, writing to $file.tmp ..."
sed 's/<piece of code to find>/<replace with that>/g' $file > $file.tmp
done
Теперь просмотрите некоторые из ваших файлов и проверьте, правильно ли была произведена замена. ЕСЛИ все в порядке, переименуйте новые файлы index.php.tmp в index.php с помощью
for file in $(find /home/user -iname index.php.tmp)
do
echo "moving $file.tmp to $file ..."
mv $file.tmp $file
done
Если в коде, который вы хотите заменить, есть косая черта ("/"), вы можете использовать другой разделитель в команде sed substitute: 's # фрагмент кода для поиска # замены этим #g'