Отправляет email-рассылки с помощью сервиса Sendsay

Поиск в текстовых файлах

Здравствуйте.

В DOSовских Norton Utilities была программа FileFind.
Есть ли аналог под Linux?
От программы требуется:
1) список файлов, в которых найдено;
2) переход к следующей/предыдущей найденной подстроке,
причем это насквозь во всех файлах, где подстрока найдена;
3) продолжать поиск во время просмотра по первым найденным вхождениям;
4) искать а архивах Zip и ARJ;
5) также работать под FreeBSD.
Всем, кроме п.3 и 5 удовлетворяет mc. Под FreeBSD 5.3-RELEASE у mc 4.6.0
не работает поиск в архивах. А при нажатии Enter на архиве пищит и
ничего не делает.

Ответить   Алексей Sun, 26 Jun 2005 23:19:52 +0800 (#391624)

 

Ответы:

Здравствуйте Алексей
В сообщении от 26 Июнь 2005 19:19 Алексей написал(a):

Так напишите и добавьте недостающеее в mc, а потом с другими
поделитесь :)

(См скрипты в /usr/share/mc/extfs - они не такие сложные)

Ответить   Mon, 27 Jun 2005 07:41:47 +0400 (#391635)

 

Здравствуйте.

Ответ на письмо от Крохин Анатолий Александрович, Monday, June 27, 2005, 12:32:06
PM:

Добавлю:
6) работать в консоли.

Не годится. Мне после того, как найду в тексте интересующее место,
надо читать от этого места и до обеда. А это выдаёт по одной строчке.
Например, "grep -A 30 -B 30 -r что_искать * | less -S" ограничивает
меня +-30 строк, а надо без ограничений.
К тому же, у меня текстовые файлы упакованы для экономии места.

Да читали. То, что мне надо добиться от grep и less либо очень
нетривиально, либо вообще не возможно от них добиться.

Ответ на письмо от Хихин Руслан, Monday, June 27, 2005, 11:41:47 AM:

Этот mc слишком уж глючный. То то не работает, то сё. Надоело. Не хочу
с ним связываться. Уж если писАть свою программу, то отдельную от mc.
Тут кому-нибудь ещё надо такую? Может у кого-нибудь есть идеи, как
сделать искалку лучше grep, find, и mc ? Если да - пишите на e-mail,
вместе сделаем.

Там всё то же cамое, что в Linux. А не работает почему-то.

Ответ на письмо от Little KING, Monday, June 27, 2005, 1:38:27 PM:

...

Имена заглавными буквами: FILE.ARJ FILE.ZIP и т.п.

Мне надо искать по содержимому.

Для данной задачи не быстрый. Ну, нашли нужный файл. Дальше его надо
читать отдельно lessом и т.п. Т.е. вводить новую команду. А в FileFind
достаточно было нажать 1 кнопку.

Ответить   Алексей Mon, 27 Jun 2005 17:34:06 +0800 (#392141)

 

i586-PoltawerKozak-linux-gnu)

On Mon, 27 Jun 2005 17:34:06 +0800
Алексей <alexei***@m*****.ru> wrote:

Вас наталкивают где искать, у каждого есть свои задачи потому и нету
времени решить Вашу и преподнести готовое решение, продолжая идею
Крохина А.А. попробуйте вот eту конструкцию для поиска в текущем каталоге

% for i in ./*; do cat $i | grep 'что искать' && clear && echo $i && sleep 2
&& less $i ; done

less может работать с очень длинными файлами потому что он не загружает
их в память целиком, а по частям и eто происходит все очень быстро

для поиска в gzip, bzip2 архивах можна использовать вместо cat - zcat и bzcat

соответственно, а для поиска в tar.gz tar.bz2 RTFM man tar , думаю что вывод

содержимого eтих архивов можна вывести в стандартный поток.

для поиска в less используeтся команда

/ что искать

Когда Вы будете читать то поиск не будет продолжатся, разве что запустить еще

один процес в тени или в другой консоли.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19606; Возраст листа: 705; Участников: 1400
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/392630

Ответить   Tue, 28 Jun 2005 10:55:10 +0300 (#392630)

 

i586-PoltawerKozak-linux-gnu)

On Mon, 27 Jun 2005 17:34:06 +0800
Алексей <alexei***@m*****.ru> wrote:

Вас наталкивают где искать, у каждого есть свои задачи потому и нету
времени решить Вашу и преподнести готовое решение, продолжая идею
Крохина А.А. попробуйте вот _ту конструкцию для поиска в текущем каталоге

% for i in ./*; do cat $i | grep 'что искать' && clear && echo $i && sleep 2
&& less $i ; done

less может работать с очень длинными файлами потому что он не загружает
их в память целиком, а по частям и _то происходит все очень быстро

для поиска в gzip, bzip2 архивах можна использовать вместо cat - zcat и bzcat

соответственно, а для поиска в tar.gz tar.bz2 RTFM man tar , думаю что вывод

содержимого _тих архивов можна вывести в стандартный поток.

для поиска в less использу_тся команда

/ что искать

Когда Вы будете читать то поиск не будет продолжатся, разве что запустить еще

один процес в тени или в другой консоли.

mc не гючний, глюки IMHO дает плохая настройка системы в целом.
Но пользоваться поиском из mc, все равно что гонять трактором за
болитом F1, лучше уже набрать команду (можна загнать скрипт у файл),
чем нажать одну и пол часа плевать в потолок, пока оно чтото там найдет.

Неубедительно :-\ , создайте в своем домашнем каталоге файл .profile
или соответствующий для вашей оболочки, сделайте запись псевдонима для
вашего mcedit

alias q=mcedit

и можете визывать его нажатием клавиш <q><Enter>

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19607; Возраст листа: 705; Участников: 1400
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/392632

Ответить   Tue, 28 Jun 2005 16:58:46 +0300 (#392632)

 

On Sun, 26 Jun 2005 23:19:52 +0800
Алексей <alexei***@m*****.ru> wrote:

4.6.0

Кроме п. 4
grep -r что_искать * | less -S

В общем man grep и man less

Что же насчет "Enter и пищит", то, похоже, надо поконфигурить mc.

Ответить   Крохин Анатолий Александрович Mon, 27 Jun 2005 08:32:06 +0400 (#391648)

 

Крохин Анатолий Александрович пишет:

Не факт... возможно в системе нет unzip или unarj, смотря на какой тип
архива делает "Enter и пищит"... или расширение файла в разных регистрах
(что более вероятней :-) )

2Алексей: в добавление можно использовать команду find, mc сам ей
пользуется, fgrep, egrep (ИМХО наиболее мощный и быстрый иснтрумент)
WBR LK.ICQ 66942266

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19571; Возраст листа: 703; Участников: 1406
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/391668

Ответить   Little KING Mon, 27 Jun 2005 11:38:27 +0600 (#391668)