find
От: Аноним  
Дата: 27.12.07 15:10
Оценка:
Как в юниксе сделать поиск по диску из командной строки, начиная с заданной директории, и вывести только те файлы в которых встречается заданное слово или регулярное выражение?
Re: find
От: zaufi Земля  
Дата: 27.12.07 15:19
Оценка:
Здравствуйте, Аноним, Вы писали:

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


`man grep`
Re: find
От: Code Digger Грузия  
Дата: 28.12.07 05:37
Оценка:
Здравствуйте, Аноним, Вы писали:

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


Я обычно делаю:

find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
Re[2]: find
От: swined Россия  
Дата: 28.12.07 05:52
Оценка:
Code Digger wrote:

> Здравствуйте, Аноним, Вы писали:

>
> А>Как в юниксе сделать поиск по диску из командной строки, начиная с
> заданной директории, и вывести только те файлы в которых встречается
> заданное слово или регулярное выражение?
>
> Я обычно делаю:
>
>
> find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
>



find . -regex '.*\..*'
find . -name '*.*'

зачем -exec то?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: find
От: feda  
Дата: 28.12.07 06:33
Оценка:
Здравствуйте, swined, Вы писали:

>> А>Как в юниксе сделать поиск по диску из командной строки, начиная с

>> заданной директории, и вывести только те файлы в которых встречается
>> заданное слово или регулярное выражение?
>>
>>
>> find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
>>



S>find . -regex '.*\..*'

S>find . -name '*.*'

S>зачем -exec то?


Чтобы искать в содержимом файла а не в имени.
Re[4]: find
От: swined Россия  
Дата: 28.12.07 06:47
Оценка:
feda wrote:

> Здравствуйте, swined, Вы писали:

>
>>> А>Как в юниксе сделать поиск по диску из командной строки, начиная с
>>> заданной директории, и вывести только те файлы в которых встречается
>>> заданное слово или регулярное выражение?
>>>
>>>
>>> find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
>>>

>
>
> S>find . -regex '.*\..*'
> S>find . -name '*.*'
>
> S>зачем -exec то?
>
> Чтобы искать в содержимом файла а не в имени.

простите, торможу
Posted via RSDN NNTP Server 2.1 beta
Re: find
От: Cruser Украина  
Дата: 28.12.07 07:32
Оценка:
Здравствуйте, Аноним, Вы писали:

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



find ./ -name "<file_mask>" | xargs grep "<text>"
Re[2]: find
От: Dair Россия  
Дата: 28.12.07 09:51
Оценка:
CD>
CD>find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
CD>


При этом строчки нужные выведутся, а понять, какая в каком файле не получится.
Более сложно так:
#!/bin/bash

for f in `find . -name 'foo.bar'`; do 
  echo $f
  grep blablabla $f
done


Еще можно смотреть, вывелось ли чего и только тогда выводить имя файла.
Re[3]: find
От: ДимДимыч Украина http://klug.org.ua
Дата: 28.12.07 11:39
Оценка:
Здравствуйте, Dair, Вы писали:

D>for f in `find . -name 'foo.bar'`; do

D> echo $f
D> grep blablabla $f
D>done
D>[/code]

Еще так можно:
find . -name 'foo.bar' | while read f; do
  echo $f
  grep blablabla $f
done
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re: find
От: djs_ Россия  
Дата: 28.12.07 18:56
Оценка:
Здравствуйте, Аноним, Вы писали:

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


egrep -Hur "pattern" /path/to/dir
например
--
Спасибо
Re[3]: find
От: Code Digger Грузия  
Дата: 29.12.07 08:19
Оценка:
Здравствуйте, Dair, Вы писали:

CD>>
CD>>find ./ -name 'foo.bar' -exec grep -H 'baz*' {} \;
CD>>


D>При этом строчки нужные выведутся, а понять, какая в каком файле не получится.

man grep
Для этого ключ -H и стоит.
Re: find
От: dotidot Россия  
Дата: 29.12.07 09:17
Оценка:
Здравствуйте, Аноним, Вы писали:

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


Мы вот такую(приблизительно) штуку юзаем для поиска по исходникам:

find "${2:-.}" -regex '.*\.\(h\|hpp\|c\|cpp\)' -print0 |xargs -0 egrep -ni "$1"

положить в файл, сделать на него chmod +x и юзать как простой eгреп
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.