Поиск внутри файлов на сервере.

Тема в разделе "Администрирование серверов", создана пользователем bork75, 28 май 2010.

Статус темы:
Закрыта.
Модераторы: mefish, stooper
  1. bork75

    bork75 The Team

    Регистр.:
    21 июн 2008
    Сообщения:
    1.450
    Симпатии:
    717
    Залил я на сервер файлов.

    И нужно мне найти в коде файлов (файлы разные - php, html, txt и т.д.), например class="content"

    Кто как ищет?

     
  2. Halo

    Halo Создатель

    Регистр.:
    17 сен 2007
    Сообщения:
    10
    Симпатии:
    3
    Вот скрипт на PHP, который не только ищет, но и заменяет найденное, естественно, рекурсивно
    PHP:
    <?php
      $text 
    '$text'// Искомая строка
      
    $retext '$retext'// Строка замены
      
    $dirname "Имя корневой директории, например ."
      
    scan_dir($dirname);  // Вызов рекурсивной функции
      ////////////////////////////////////////////////////////// 
      // Рекурсивная функция - спускаемся вниз по каталогу 
      ////////////////////////////////////////////////////////// 
      
    function scan_dir($dirname
      { 
        
    // Объявляем переменные замены глобальными 
        
    GLOBAL $text$retext
        
    // Открываем текущую директорию 
        
    $dir opendir($dirname); 
        
    // Читаем в цикле директорию 
        
    while (($file readdir($dir)) !== false
        { 
          
    // Если файл обрабатываем его содержимое 
          
    if($file != "." && $file != ".."
          { 
            
    // Если имеем дело с файлом - производим в нём замену 
            
    if(is_file($dirname."/".$file)) 
            { 
              
    // Читаем содержимое файла 
              
    $content file_get_contents($dirname."/".$file); 
              
    // Осуществляем замену 
              
    $content str_replace($text$retext$content); 
              
    // Перезаписываем файл 
              
    file_put_contents($dirname."/".$file,$content); 
            } 
            
    // Если перед нами директория, вызываем рекурсивно 
            // функцию scan_dir 
            
    if(is_dir($dirname."/".$file)) 
            { 
              echo 
    $dirname."/".$file."<br>"
              
    scan_dir($dirname."/".$file); 
            } 
          } 
        } 
        
    // Закрываем директорию 
        
    closedir($dir); 
      }
    ?>
     
  3. bork75

    bork75 The Team

    Регистр.:
    21 июн 2008
    Сообщения:
    1.450
    Симпатии:
    717
    Залил этот пример и не понятно как им пользоваться...
     
  4. Halo

    Halo Создатель

    Регистр.:
    17 сен 2007
    Сообщения:
    10
    Симпатии:
    3
    Может он тебе и не нужен :). Тебе просто нужно найти код в файлах и что-то сделать с этими файлами (удалить/скопировать) или все-таки найденный код заменить?
     
  5. bork75

    bork75 The Team

    Регистр.:
    21 июн 2008
    Сообщения:
    1.450
    Симпатии:
    717

    Мне нужно из множества файлов найти один или несколько файлов в которых есть искомая строка, автоматом мне заменять не нужно.

    Обычно я ищу локально через редактор типа FrontPage. Но нужно перетаскивать файлы с сервера.
     
  6. Halo

    Halo Создатель

    Регистр.:
    17 сен 2007
    Сообщения:
    10
    Симпатии:
    3
    Я бы использовал php-shell для этих целей и команды grep, find. Покури гугл на тему "найти файлы с определенным кодом рекурсивно"
     
  7. MrXy

    MrXy Писатель

    Регистр.:
    26 июн 2007
    Сообщения:
    9
    Симпатии:
    2
    Самый простой и быстрый вариант, не выходя с консоли грепом:
    PHP:
    grep --color=auto -iRnH 'xxx' *.xx
    Покажет где именно найден ххх и даже красиво подсветит :)
     
Статус темы:
Закрыта.