2015-06-25 2 views
1

Мне нужно использовать SSH, чтобы найти все файлы, содержащие определенную строку (вредоносное ПО), и удалить эти файлы.SSH команда для поиска и удаления всех файлов, содержащих строку

Это команда, я использую, чтобы найти и отобразить список этих вредоносных файлов:

find * -name '*.php' -exec grep -l "return base64_decode(" {} \; 

и получить список вроде этого:

enter image description here

Я хочу удалить все эти файлы (а не только список из них).

В принципе «найти все файлы, содержащие строку, и удалить эти файлы».

ответ

2

Вы можете сказать, труба xargs rm так, что данные имена файлов будут удалены:

find * -name '*.php' -exec grep -l "return base64_decode(" {} \; | xargs rm 

Вы также можете сохранить текущий вывод find, а затем цикл по содержанию выполнения rm <file>:

find ... > file 
while IFS= read -r file 
do 
    rm "$file" 
done < file 
+1

Это работало удивительно. Большое вам спасибо @fedorqui –

+0

Рад прочитать это, @AlboBest:) Из любопытства: какую версию вы использовали, 'find | xargs rm' или один с петлей? – fedorqui

+0

Я использовал 'find | xargs rm' Я понятия не имею, как использовать другую версию/код, lol :) –

Смежные вопросы