Я обнаружил вредоносное ПО на своем сервере Linux и пытаюсь удалить его из многих PHP-файлов.
Я бесконечно пробовал grep | sed и grep | tr, но не смог даже стереть простую текстовую строку, получая разные ошибки.
При попытке:
grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'
Я получаю сообщение об ошибке:
не могу читатьимя файла.php
Использование Терминала на Mac — может быть, проблема в синтаксисе OSX?
Моя последняя задача — удалить длинную строку кода из всех файлов, содержащую символы $,!,?,<,>,\," — нужно ли мне будет добавлять к ним обратную косую черту?
решение1
Вам следует выполнить восстановление из резервной копии или системы управления исходным кодом, как показано на рисунке.@Матрекомендуется, поскольку в противном случае вы не сможете быть на 100% уверены, что вы все очистили.
Проблема с вашей командой — это -0
флаг для xargs
, поскольку этот способ xargs
ожидает аргументы с нулевым завершением, что не работает с выводом grep -l
. Просто удалите , -0
и это будет работать, если только в именах файлов нет пробелов.
grep -l '@error' * | xargs sed -i 's/error/nothing/g'
решение2
grep -l @error * | xargs sed -i s/error/test/g
будет работать.