The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Поиск файлов, содержащих определенное слово"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 02:24 
Нужно добиться вывода списка $i, содержащих данное $text.


#!/bin/sh

date >> spam-htaccess.log
text="abrakadabra"

for i in `ls /var/www/vhosts`; do
    file=/var/www/vhosts/$i/httpdocs/.htaccess
    if test -s $file
        then    cat $file | grep $text | grep -v ^# | awk '{ print ($text, $0) ;}'>> spam-htaccess.log
    fi
done

Пробовал, через, awk - не получается...

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Поиск файлов, содержащих определенное слово"  
Сообщение от allez (ok) on 19-Фев-09, 05:12 
>[оверквотинг удален]
>
>for i in `ls /var/www/vhosts`; do
>    file=/var/www/vhosts/$i/httpdocs/.htaccess
>    if test -s $file
>        then    cat $file | grep $text | grep -v ^# | awk '{ print ($text, $0) ;}'>> spam-htaccess.log
>    fi
>done
>
>
>Пробовал, через, awk - не получается...

find /var/www/vhosts -name ".htaccess" -exec grep -l "abrakadabra" {} \;

Очень надеюсь, что вы не студент-раздолбай. :-)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Поиск файлов, содержащих определенное слово"  
Сообщение от phpcoder email(??) on 19-Фев-09, 07:56 
>
find /var/www/vhosts -name ".htaccess" -exec grep -l "abrakadabra" {} \;

Я бы ещё -type f добавил

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Поиск файлов, содержащих определенное слово"  
Сообщение от allez (ok) on 19-Фев-09, 11:33 
>Я бы ещё -type f добавил

Ну да, не помешает. Как говорится, "во избежание". Но этим пусть уже автор темы занимается. :-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 15:00 
>>Я бы ещё -type f добавил
>
>Ну да, не помешает. Как говорится, "во избежание". Но этим пусть уже
>автор темы занимается. :-)

Нафиг мне использовать find?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Поиск файлов, содержащих определенное слово"  
Сообщение от vic (??) on 19-Фев-09, 15:26 
>>>Я бы ещё -type f добавил
>>
>>Ну да, не помешает. Как говорится, "во избежание". Но этим пусть уже
>>автор темы занимается. :-)
>
>Нафиг мне использовать find?

а) с целью обойти все подкаталоги, а не только с глубиной 1.
б) идиоматичен

а если хочется только с глубиной 1, то:
#!/bin/sh
date >>spam-htaccess.log
grep -l abrakadabra /var/www/vhosts/*/httpdocs/.htaccess 2>/dev/null >> spam-htaccess.log

Нафиг тебе использовать for+cat+awk++++ =) ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Поиск файлов, содержащих определенное слово"  
Сообщение от phpcoder email(??) on 19-Фев-09, 15:27 
>а если хочется только с глубиной 1, то:

...всё равно find, только уже с ключиком -maxdepth 1 =))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Поиск файлов, содержащих определенное слово"  
Сообщение от vic (??) on 19-Фев-09, 15:43 
>>а если хочется только с глубиной 1, то:
>
>...всё равно find, только уже с ключиком -maxdepth 1 =))

аха, я помню :))
но вдруг find религией не позволен :)

PS grep -r ;)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 15:50 
>>>а если хочется только с глубиной 1, то:
>>
>>...всё равно find, только уже с ключиком -maxdepth 1 =))
>
>аха, я помню :))
>но вдруг find религией не позволен :)
>
>PS grep -r ;)

find слишком долго работает, да еще в тех директориях, где не надо искать.
Я уже и так сузил зону поиска.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Поиск файлов, содержащих определенное слово"  
Сообщение от vic (??) on 19-Фев-09, 15:59 
>find слишком долго работает, да еще в тех директориях, где не надо
>искать.
>Я уже и так сузил зону поиска.

для этого и есть ключ maxdepth у find чтобы не обходить все дерево ниже начальной точки.

ну вот так еще можно:

 
#!/bin/sh

date >> spam-htaccess.log
text="abrakadabra"

for i in /var/www/vhosts/*/httpdocs/.htaccess ; do
    grep $text $i 2>/dev/null | egrep -qv '^#' && echo $i >> spam-htaccess.log
done


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Поиск файлов, содержащих определенное слово"  
Сообщение от allez (ok) on 19-Фев-09, 19:30 
>find слишком долго работает, да еще в тех директориях, где не надо
>искать.
>Я уже и так сузил зону поиска.

М-да, как все запущено...

date >> spam-htaccess.log
text="abrakadabra"
find /var/www/vhosts/*/httpdocs -type f -name ".htaccess" -exec grep -l "$text" {} \; >> spam-htaccess.log

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 14:59 
>[оверквотинг удален]
>>    if test -s $file
>>        then    cat $file | grep $text | grep -v ^# | awk '{ print ($text, $0) ;}'>> spam-htaccess.log
>>    fi
>>done
>>
>>
>>Пробовал, через, awk - не получается...
>
>
find /var/www/vhosts -name ".htaccess" -exec grep -l "abrakadabra" {} \;

>Очень надеюсь, что вы не студент-раздолбай. :-)

Совершенно не то.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Поиск файлов, содержащих определенное слово"  
Сообщение от phpcoder email(??) on 19-Фев-09, 15:08 
>Совершенно не то.

Значит вы плохо сформулировали задачу. Если бы вы привели к куску вашего неработающего кода пример, то это было бы эффективнее. А так мы попытались сделать ваш неправильный код рабочим :)

Что вам надо-то? Какие файлы? Что в них? В какой форме вывести?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 15:49 
>>Совершенно не то.
>
>Значит вы плохо сформулировали задачу. Если бы вы привели к куску вашего
>неработающего кода пример, то это было бы эффективнее. А так мы
>попытались сделать ваш неправильный код рабочим :)
>
>Что вам надо-то? Какие файлы? Что в них? В какой форме вывести?
>

Нужно добиться вывода списка $i, содержащих данное $text.

Чё непонятного?
ну, нахожу я файл, который содержит исходное слово, как его расположение передать в логи?

Вот, например, почему в awk нельзя передать внешнюю переменную?

awk '{ print ($text, $0) ;}'

где, $text определяется  в начале цикла.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Поиск файлов, содержащих определенное слово"  
Сообщение от phpcoder email(??) on 19-Фев-09, 15:53 
>Вот, например, почему в awk нельзя передать внешнюю переменную?

Можно! man awk на тему ключа -v


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Поиск файлов, содержащих определенное слово"  
Сообщение от phpcoder email(??) on 19-Фев-09, 15:56 
>Нужно добиться вывода списка $i, содержащих данное $text.
>
>Чё непонятного?

Всё непонятно..

>ну, нахожу я файл, который содержит исходное слово, как его расположение передать
>в логи?

В какие логи? В системные? man logger

Или просто записать в файл?

Вы уточняйте, это в ваших же интересах.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Поиск файлов, содержащих определенное слово"  
Сообщение от angra (ok) on 19-Фев-09, 16:07 
>ну, нахожу я файл, который содержит исходное слово, как его расположение передать
>в логи?

на вкус grep -l или if с проверкой кода возврата

>Вот, например, почему в awk нельзя передать внешнюю переменную?
>awk '{ print ($text, $0) ;}'

Ну потому что вы сами это отключили одинарными кавычками, awk тут не причем. Кстати зачем он вообще вам понадобился?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Поиск файлов, содержащих определенное слово"  
Сообщение от universite email(ok) on 19-Фев-09, 20:35 
Всем спасибо за помощь.
Вариант с find:

#!/bin/sh

date >> spam-htaccess.log
url="http://leshik.info/"

for i in `ls /var/www/vhosts`; do
    if test -s $file
      then    find /var/www/vhosts/$i/httpdocs -name ".htaccess" -exec grep -l "$url" {} \; >> spam-htaccess.log
    fi
done

Вариант с awk:


#!/bin/sh

date >> spam-htaccess.log
url="http://leshik.info/"

for i in `ls /var/www/vhosts`; do
    file=/var/www/vhosts/$i/httpdocs/.htaccess
    if test -s $file
        then    cat $file | grep $url | grep -v ^# | awk -v domain="$i" '{ print domain ;}'>> spam-htaccess.log
    fi
done

В варианте с find показываются закомментированные строки...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Поиск файлов, содержащих определенное слово"  
Сообщение от allez (ok) on 20-Фев-09, 06:06 
>В варианте с find показываются закомментированные строки...

Это решается соответствующей модификацией поискового регулярного выражения.

find /var/www/vhosts/*/httpdocs -type f -name ".htaccess" -exec grep -l "^[^#].*$text" {} \; >> spam-htaccess.log

Выражение "^[^#].*$text" означает, что нужно искать строки, не начинающиеся с символа "#" и
включающие в себя текст, содержащийся в переменной $text.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру