Как рекурсивно удалить строки, содержащие определенный текст, используя PHP на Linux Server?
Я хочу найти во всем моем веб-сервере Linux ВСЕ файлы и подкаталоги, содержащие определенную строку.
Если эта строка найдена, удалите эту строку. Я делаю это потому, что вирус каким-то образом попал на мой сайт и добавляет одну строку кода, поэтому, если я найду эту строку, я могу легко удалить вирус.
Вот мой код
$input = 'cd ../home/public_html
find ./ -type f -exec sed -i "/pantscow.ru/d" {} \ ';
echo $input;
$output = shell_exec($input);
echo "<pre>#$output</pre>";
Можете ли вы сказать мне, почему это не работает? Он просто возвращает "#". У меня это работало до нескольких месяцев назад, но я забыл, как правильно выполнять.
Благодарю.
1 ответ
Вы можете использовать эту единственную команду, чтобы найти все те PHP-файлы, которые имеют эту строку-
find . -name "*php" -exec grep -H abc {} \;
где "abc" была строка, которую вы хотели найти.