Поиск в бинарных файлах по фрагменту текста

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
minoru-kun
Сообщения: 621
ОС: Debian GNU/Linux

Поиск в бинарных файлах по фрагменту текста

Сообщение minoru-kun »

Задача.
Дано: куча файлов в формате Microsoft Office DOC; OpenOffice ODT (всего - около 2000).
Требуется: найти все файлы, содержащие заданный кусок текста.
Стандартным kfind пользоваться не рекомендовать, ибо уже пробовали, он - не помогает. Для DOC оказалась полезной виндовая программа AVFind under WINE, но для ODT она непригодна...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение diesel »

а beagle не подходит?
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

А яндекс поиск 2.0 (теперь банановый) под wine не работает?
%s
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stdds »

Кстати кто нибудь знает как в текстовом режиме искать файлы по содержимому?
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение Aectann »

stdds писал(а):
17.05.2007 23:09
Кстати кто нибудь знает как в текстовом режиме искать файлы по содержимому?

grep ?
My god... it's full of stars!...
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение TwisT »

Чувствую что в меня полетят помидоры и т.п.
НО полазив по форуму убедился, что установленая мандрива затормаживает развитие молодого линуксоида
так сказать не способствует консольному развитию IMHO, токо по кнопкам мышой и все, весь Linux
Linux user #432536.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение eduard_pustobaev »

TwisT писал(а):
18.05.2007 00:17
Чувствую что в меня полетят помидоры и т.п.
НО полазив по форуму убедился, что установленая мандрива затормаживает развитие молодого линуксоида
так сказать не способствует консольному развитию IMHO, токо по кнопкам мышой и все, весь Linux

Конечно закидают. К чему в нормальной теме такое писать?
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение BlackStar »

wi: писал(а):
17.05.2007 00:48
А яндекс поиск 2.0 (теперь банановый) под wine не работает?


А чем тебе beagle и tracker не угодили?
LightLang Team
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stdds »

Aectann писал(а):
17.05.2007 23:13
grep ?


ну да греп !
чета перечитал кучу инфы но ни фига не понял.
как всетаки? тут же ведь и find должен учавствовать?

TwisT писал(а):
18.05.2007 00:17
Чувствую что в меня полетят помидоры и т.п.
НО полазив по форуму убедился, что установленая мандрива затормаживает развитие молодого линуксоида
так сказать не способствует консольному развитию IMHO, токо по кнопкам мышой и все, весь Linux


А разве в мандриве плохая консоль?
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

stdds писал(а):
18.05.2007 23:38
А разве в мандриве плохая консоль?

А разве новички ей пользуются?
Мне вообще не нравится путь линуха с точки зрания начинающего пользователя. Я уже как-то встречал установщик программ. Так всю изюминку линуха превратят в мусор. Люди перестают понимать основы, на которых держится все.
Надо делать руками в текстах, а не ясты использовать, конторпанели и т.п. Только после этого придет понимание.
%s
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение diesel »

stdds писал(а):
18.05.2007 23:38
А разве в мандриве плохая консоль?

вы сами же ответили на свой вопрос:

stdds писал(а):
18.05.2007 23:38
ну да греп !
чета перечитал кучу инфы но ни фига не понял.
как всетаки? тут же ведь и find должен учавствовать?
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

TwisT писал(а):
18.05.2007 00:17
Токо по кнопкам мышой и все, весь Linux

Упрощенный гном -- применение изменеий налету :)
Далее избавление от консоли в подсознании? :))) (не в огород гному -- эта фича мне у него нравится безумно)

BlackStar писал(а):
18.05.2007 01:04
А чем тебе beagle и tracker не угодили?

Я о них не знал -- не приходилось :)
%s
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stdds »

wi: писал(а):
19.05.2007 00:41
А разве новички ей пользуются?
Мне вообще не нравится путь линуха с точки зрания начинающего пользователя. Я уже как-то встречал установщик программ. Так всю изюминку линуха превратят в мусор. Люди перестают понимать основы, на которых держится все.
Надо делать руками в текстах, а не ясты использовать, конторпанели и т.п. Только после этого придет понимание.

Ну если ты такой весь в понимании :) то обьясни мне неучу конторпанельному как искать файлы по содержимому с консоли? :)
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

Да ну, какой же я уч :)
Я только учусь. Но вообще еще можно diff . Немного другое, но тоже может пригодиться.
%s
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение diesel »

stdds писал(а):
19.05.2007 00:57
Ну если ты такой весь в понимании :) то обьясни мне неучу конторпанельному как искать файлы по содержимому с консоли? :)

ОК.
1) grep умеет искать содержимое в каком-то конкретном файле
самый простой вариант использования grep <то что ищем> <то где ищем> . Например:

diesel@gfl211-04:~$ grep diesel /etc/passwd
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash

в качестве того что ты ищешь могут выступать регулярные выражения. когда надо регулярные выражения применяют опции -e (обычные) -E(расширенные) -P(очень иногда, перловые). иногда важно делать поиск независмый от регистра. для этого применяют опцию -i:

Код: Выделить всё

daemon:x:1:1:daemon:/usr/sbin:/bin/sh
dictd:x:103:103::/var/lib/dictd:/bin/false
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash
diesel@gfl211-04:~$ grep -iE '^d' /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Debian-exim:x:102:102::/var/spool/exim4:/bin/false
dictd:x:103:103::/var/lib/dictd:/bin/false
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash


grep умеет искать не только в одном файле. опция -r дает рекурсивный поиск по директории, т.е.
grep -r <что ищим> /path/to/dir
для этой опции могут быть полезны опции -I - игнорить бинарные файлы, -l показать _только_ файлы в которых найдено(без того что найдено), -h не показывать имен файлов.

прикольные опции еще -v - "инвертировать поиск" т.е. показывать все что не подходит, -o показать только текст который подходит под то что ищешь(полезно для регулярных выражений).

2) find поиск по именам и атрибутам файлов, обычно так:
find <где искать> [-iname <маска файла для поиска> -type <тип файл, директория, линка итп> ... еще несколько] -exec [здесь команда которую надо исполнить над найденным файлом, имя найденного файла замещают на {}; команда должна заканчиваться точкой с запятой которая экранируется от шелла:] \;
дурацкий пример:
find -iname "*.html" -exec grep '<form' {} \;
с тем чтобы сочетать find и греп в таком контексте сталкивался крайне редко.

примерно так :-) есс-но это работает на _текстовых_ файлах. для *.doc и прочих бинарных форматов надо извращаться.
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stdds »

diesel писал(а):
19.05.2007 01:53
ОК.
1) grep умеет искать содержимое в каком-то конкретном файле
самый простой вариант использования grep <то что ищем> <то где ищем> . Например:

diesel@gfl211-04:~$ grep diesel /etc/passwd
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash

в качестве того что ты ищешь могут выступать регулярные выражения. когда надо регулярные выражения применяют опции -e (обычные) -E(расширенные) -P(очень иногда, перловые). иногда важно делать поиск независмый от регистра. для этого применяют опцию -i:

Код: Выделить всё

daemon:x:1:1:daemon:/usr/sbin:/bin/sh
dictd:x:103:103::/var/lib/dictd:/bin/false
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash
diesel@gfl211-04:~$ grep -iE '^d' /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Debian-exim:x:102:102::/var/spool/exim4:/bin/false
dictd:x:103:103::/var/lib/dictd:/bin/false
diesel:x:1000:1000:,,,:/home/diesel:/bin/bash


grep умеет искать не только в одном файле. опция -r дает рекурсивный поиск по директории, т.е.
grep -r <что ищим> /path/to/dir
для этой опции могут быть полезны опции -I - игнорить бинарные файлы, -l показать _только_ файлы в которых найдено(без того что найдено), -h не показывать имен файлов.

прикольные опции еще -v - "инвертировать поиск" т.е. показывать все что не подходит, -o показать только текст который подходит под то что ищешь(полезно для регулярных выражений).

2) find поиск по именам и атрибутам файлов, обычно так:
find <где искать> [-iname <маска файла для поиска> -type <тип файл, директория, линка итп> ... еще несколько] -exec [здесь команда которую надо исполнить над найденным файлом, имя найденного файла замещают на {}; команда должна заканчиваться точкой с запятой которая экранируется от шелла:] \;
дурацкий пример:
find -iname "*.html" -exec grep '<form' {} \;
с тем чтобы сочетать find и греп в таком контексте сталкивался крайне редко.

примерно так :-) есс-но это работает на _текстовых_ файлах. для *.doc и прочих бинарных форматов надо извращаться.


Вот так бы вот сразу бы вот :)
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

Так сразу есть в man :)
Предлагаю не отвечать с тамими большими цитатам.
%s
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stdds »

wi: писал(а):
19.05.2007 17:45
Так сразу есть в man :)
Предлагаю не отвечать с тамими большими цитатам.


Читал я этот ман ни понятно нифига, был бы на китайском может быть понял бы
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение wi: »

Кстати, чтобы получить ман, можно в firefox ввести адрес man grep (нужен инет).

stdds писал(а):
19.05.2007 20:31
Читал я этот ман ни понятно нифига, был бы на китайском может быть понял бы

Попробуй почитать здесь. (шутка, не оффтоп)
%s
Спасибо сказали:
Аватара пользователя
stomp
Сообщения: 721
ОС: Debian GNU

Re: Поиск в бинарных файлах по фрагменту текста

Сообщение stomp »

Попробуй почитать здесь. (шутка, не оффтоп)

:laugh: :wacko:

Кстати, чтобы получить ман, можно в firefox ввести адрес man grep (нужен инет).

Класс! Жаль только что не все на русском!
Спасибо сказали: