Реклама на сайте Advertise with us
Тема: Shell. Search and replace. Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе Norman(Luxuru)


Зарегистрирован: 14.10.03
Сообщения: 146
Ссылка на сообщениеДобавлено: 01/08/04 в 17:26     

И опять вопрос о работе с шелом.
Кто нибуть знает, команду, действие в mc, или какую нибуть утилиту, либо скрипт, для поиска и замены заданной группы! строк в большом кол-ве файлов через шелл.

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 2390
Ссылка на сообщениеДобавлено: 01/08/04 в 17:48     

Я знаю, что это можно сделать какими-то хитрыми командами юникса. Но мы простых путей не ищем icon_smile.gif
Мой скрипт для обхода дерева каталогов, поиска и замены строки (с регулярными выражениями) на другую.
Создаем файл 'script.php", делаем чмод +exec, правим его и запускаем './script.php'.

Код:

#!/usr/local/bin/php
<?
$files="(pictext|htm|html)$";//Какие расширения файлов обрабатывать

$test_folder='/home/httpdocs/domain.com';// Начиная откуда искать

function FTest($content)
{
    if (eregi('искомая строка',$content)) // Если $content содержит искомую строку (RegExp)
   return true;
    return false;
}

function FModify($content)
{
   $content=eregi_replace("что ищем","на что заменяем",$content);
   return $content;
}

function CleanDir($dir)
{
    global $files;
    if (!is_dir($dir)) return;
    $d=opendir($dir);
    if ($d)
    {
   while ($file=readdir($d))
   {
       if (ereg('^\.+$',$file)) continue;
       if (is_dir($dir.'/'.$file))
       {
      CleanDir($dir.'/'.$file);
      continue;
       }
       if (eregi($files,$file))
       {
      $fc=file_get_contents($dir.'/'.$file);
      if (FTest($fc))
      {
         echo "Found: {$dir}/{$file}\n";
         $fp=fileperms($dir.'/'.$file);
         $fc=FModify($fc);
         $ff=fopen($dir.'/'.$file,'w');
         if ($ff)
         {
             fwrite($ff,$fc);
             fclose($ff);
             chmod($dir.'/'.$file,$fp);
         }
      }
       }
   }
    }
    closedir($d);
}
echo "Starting\n";
CleanDir($test_folder);
?>

K началу

 
Информация о пользователе Kerp


Зарегистрирован: 22.02.03
Сообщения: 3
Ссылка на сообщениеДобавлено: 03/08/04 в 23:20     

Norman(banned) писал:
И опять вопрос о работе с шелом.
Кто нибуть знает, команду, действие в mc, или какую нибуть утилиту, либо скрипт, для поиска и замены заданной группы! строк в большом кол-ве файлов через шелл.

Код:

find DIRECTORY -name \*.html -exec perl -npi -e 's!http://www.microsoft.com!http://www.redhat.com!g' {} \;

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 2390
Ссылка на сообщениеДобавлено: 04/08/04 в 04:54     

Я ж сказал, что простых путей мы не ищем icon_smile.gif

Чес говоря, мне проще написать то что я написал, чем то что написал Kerp. Хотя эффект у этих двух вещей одинаковый icon_smile.gif

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »