2016-02-17 7 views
-1

Мои файлы были атакованы.Заменить первую строку командой оболочки

Теперь многие из моих файлов начинаются с

; ?><?php 

в первой строке.

Я хочу, чтобы заменить его

<?php 

мне нужна команда оболочки, чтобы иметь дело с большим количеством каталогов в моем сервере рекурсивно, поэтому параметр может быть каталогом.

Необходимо только первая строка, и необходимы только файлы PHP.

+0

Что именно ваша проблема и что вы еще пытались сделать? –

ответ

1

Команда сделать такую ​​правку с СЭД для одного файла будет

sed -i '1s/^; ?><?php/<?php/' file 

, который заменяет файл на месте. Если вы используете BSD sed, а не GNU sed, вы должны указать расширение как в sed -i.bak.

Теперь, чтобы сделать это для многих файлов, вы можете объединить команду с find:

find . -type f -name '*.php' -exec sed -i '1s/^; ?><?php/<?php/' {} \; 

Это рекурсивно найти все .php файлы и сделать замену.

Это, как говорится, вы должны начать с известной хорошей резервной копии, если вас действительно взломали.

+0

Привет, Большое вам спасибо. очень полезно. На самом деле многие файлы атакованы аналогичным образом. Я разместил здесь два файла www.flatworld.jp/data/flatworldsoftjp/1/10/sample.zip имя функции отличается, но функция такая же, я думаю. Как изменить свою команду, чтобы перечислить все файлы и заменить ее на flatworld

+0

@flatworld. Вы можете понять, что я не собираюсь загружать zip-файл с произвольного веб-сайта. Если у вас есть новая, другая проблема, пошлите и задайте новый вопрос. Всегда полезно показать, что вы уже пробовали, и как это не удалось. –

+1

Хорошо, вижу. Еще раз спасибо. В любом случае я решил найти следующую команду. -type f -name '* .php' -exec sed -i '1s /^.* flatworld

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