3

Я делаю ежедневные заметки в текстовом файле с меткой даты в формате ГГГГММДД. Эти файлы имеют длину не более 100 строк и написаны в формате блога.

Я хотел бы иметь возможность искать эти файлы, как если бы они были сообщениями в блогах, проиндексированными Google, с некоторым запросом фразы, возвращающим наиболее релевантные / недавние имена файлов с датой, с фрагментом, содержащим соответствующую часть.

В идеале это было бы что-то вроде этого:

#searchindex "laptop no sound"

возвращает:

20100909.txt:

... звук ноутбука не работает ...

20100101.txt

... звук слишком громкий ... обсуждает, какой ноутбук купить ...

и так далее и тому подобное.

Я работаю на платформе Linux (Debian с GNOME). Я смотрел на Бигля и Трекера, но они кажутся просто излишними из-за того, что я хочу.

РЕДАКТИРОВАТЬ: Многие предложения включают в себя grep, но я хотел бы что-то более мощное, учитывая близость ключевых слов, даты и т.д. Многие из этих файлов будут иметь несколько похожих ключевых слов, поэтому я получу слишком много обращений, используя только grep. Я не против дополнительных затрат на индексацию.

4 ответа4

2

Вы можете использовать grep в функции bash для этого:

function searchindex ()
{
    if [ "$#" -gt 0 ] ; then
        ls -t | xargs -L1 grep -H -C3 -- `echo "$@" | sed 's/ /\\\|/g'`
    fi
}

Где -C3 - это количество строк контекста, если вы хотите просто совпадающую строку, вы можете удалить ее.

1

Другой вариант - использовать glimpse.

Это индексатор, поэтому сначала нужно построить индекс:

glimpseindex -B -H {Directory for index} -f

Вы можете искать файлы довольно мощным способом с помощью команды glimpse.

Проблеск довольно стар, но он делает работу для меня.

0

Будет ли простой grep делать то, что вы хотите?

$ egrep "laptop|sound" *txt
20100101.txt:sound is too loud... debating what laptop to buy
20100505.txt:the sound of silence
20100606.txt:I just bought a new laptop
20100909.txt:laptop sound isn't working

$ egrep "laptop.*sound|sound.*laptop" *txt
20100101.txt:sound is too loud... debating what laptop to buy
20100909.txt:laptop sound isn't working

$ grep laptop *txt | grep sound
20100101.txt:sound is too loud... debating what laptop to buy
20100909.txt:laptop sound isn't working
0

Google-Desktop-Linux доступен в репозиториях Debian и будет делать то, что вы хотите. Если у вас возникли проблемы с горячей клавишей по умолчанию для вызова окна поиска, воспользуйтесь этим исправлением. Вы можете ограничить типы файлов и местоположений, которые индексируются, чтобы не перегружаться. Я попробовал и Beagle, и Tracker, прежде чем остановиться на Google Desktop.

Извините - не командная строка, но все же стоит посмотреть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .