Пара полезных примеров команды find

Случилась беда и на сайт залили шелл в js скрипты. Нужно было быстро избавиться от него на сайте. Первым делом полез в бэкапы и увидел, что шелл присутствует даже в самых старых (месячной давности) скриптах. Следовательно нужно было как-то исправить около 10000 js файлов. При анализе нескольких файлов, выяснил что нужно из каждого js файла удалить строку, включающую в себя определенное слово или подстроку. Ручками я не решился этого делать, немного гугления, чтения манов и смекалки родили три очень полезные командочки:
1
find /dir -mount -exec grep -li "substing" {} \; > /dir/result.txt

Ищет в директории /dir и во всех поддиректориях файл, содержащий строку substing (можно с пробелами, внимательнее относитесь к кавычкам, могут быть проблемы), список файлов сохраняет в /dir/result.txt. Я таким образом оценивал масштабы беды, ну и проверял есть ли результат.
2
find /dir -mount -exec grep -li "substing" {} \; | while read f; do cat "$f" | grep -v "substing" > /tmp-dir/tmp.file; mv /tmp-dir/tmp.file "$f"; chown apache:apache "$f"; done

Ищет в директории /dir и во всех поддиректориях файл, содержащий строку substing (можно с пробелами, внимательнее относитесь к кавычкам, могут быть проблемы), при этом удаляет строку в которой есть substing и меняет владельца я указал apache, ну это вам виднее будет, на какие нужно поменять. Если убрать «chown apache:apache „$f“;», то владельцем файла будет тот пользователь, от которого запустили команду.
3
find /dir -type d -exec find {} -mtime -1 -name "*.php" \;

Тут все просто: вывод всех файлов php из директории dir и ее поддиректорий, имевших изменения за последние 24 часа.
  • 0
  • 04 апреля 2012, 18:56
  • admin

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Яндекс.Метрика