LINUX.ORG.RU

Универсальный grep. Есть такой?

 , ,


0

3

Есть абстрактная файлопомойка, с кучей файлов о накопленном багаже знаний: что-то в текстовом виде, или с примитивной разметкой а-ля markdown, конфиги, логи, примеры; что-то в pdf или doc/odt. Не разберешь уже, в общем. Думаю, у многих есть такая. Так вот вопрос о том как организовать во всем это безобразии полноценный поиск. Т.е. чтобы можно было _сразу_ искать:

- в имени файла (find)

- в содержимом (grep)

- в pdf (pdfgrep)

Юниксвей это круто, но хотелось бы больше практичности. Что посоветуете?


Ответ на: комментарий от proud_anon

С виду было неплохо, только оно индекс строит, т.е. надо еще и следить за его актуальностью. Попробовал скормить ей файлопомойку, дропнул через пять минут когда индекс перевалил за 300MB.

emcode
() автор топика

Нет, нет такого, есть монструозные говноиндексеры, с работой одного из них ты уже столкнулся.

Вместо find используй mlocate и updatedb по крону или вручную.

kep
()
Ответ на: комментарий от zolden

Когда я сидел на KDE4 это было первое, что я убивал после инсталляции. :) Это говно еще и mysql инстанс запускает.

emcode
() автор топика
Ответ на: комментарий от emcode

что же это за «багаж знаний» такой?

anonymous
()
Ответ на: комментарий от anonymous

Вот это вот. Или выложи в интернет, если редкое, а потом в нём же и найдешь.

anonymous
()

Думаю, у многих есть такая.

Во-первых взять для себя за правило любые данные сразу после скачивания приводить к единому формату. Скачал книжку, потратил полминуты на конвертирование в удобный формат, задал адекватное название и положил в определённое место на структурированной файловой системе. Тогда помойки не будет.

А если уж разгребать помойку не хочется и индексаторы не нравятся, напиши костыль. Я ничего сложного не вижу. Что-то типа.

NAME=$1

echo "Find by names"
find -type f -name "*${NAME}*"

function unigrep() {
  FILE=$1
  # Get mimetype
  MIMETYPE=$(file | grep ...)
  case $MIMETYPE in
    pdf)
      pdfgrep
    ;;
    txt)
      grep
    ;;

    ...

  esac
}

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

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

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

Вот как раз примерно такую штуку я и имел в виду, просто не хотелось велосипед изобретать. Поиск будет идти быстро, потому что структурой и иерархией в моей помойке все четко. :)

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

emcode
() автор топика
Ответ на: комментарий от emcode

Ну тогда определяй MIME-тип файла и грепай его уже инструментом, который именно для этого файла предназначен.

Униерсального грепа нет, потому как «единого формата документа, к сожалению, пока не придумали.»

shell-script ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.