Я использую Opensuse 10.3 и хотел бы знать инструменты командной строки для поиска фраз в большом количестве PDF-файлов внутри каталога. В Windows XP поиск в проводнике позволяет это сделать, но он слишком медленный. Есть ли здесь советы по grep?
search
grep
windows-search
мороженщик
источник
источник
Ответы:
источник
В Linux и Windows вы можете использовать Acrobat Reader, в котором есть команда для поиска по нескольким файлам.
Под Linux есть Recoll, которая создаст индекс ваших pdf-файлов (и более) при первом запуске. После построения индекса поиск слов должен быть очень быстрым; поиск фразы должен быть разумным. Убедитесь, что
pdftotext
команда установлена перед запуском Recoll; под Debian и Ubuntu, это вpoppler-utils
пакете, я не знаю о Suse.Или вы можете напрямую преобразовать файлы в текст и использовать grep для текстовых файлов с помощью команд ниже.
источник
pdftotext
(какие инструменты, такие как Recoll, будут делать автоматически).Adobe Reader X делает работу , и это делает позволяет поиск под весь каталог и подкаталоги, а не только внутри файла, но это не программа командной строки.
источник
recoll
Устанавливается на Debian легко, теперь пытается сделать его пригодным для моих сотрудников на базе Windows.Чтобы рекурсивно перечислить все файлы в вашем домашнем каталоге, которые имеют расширение PDF и содержат строку, например, соответствующую регулярному выражению '
[iI]n Haskell
', вы можете выполнить:Примечания:
-exec
илиxargs
потому что, по соображениям безопасности , я думаю, что это хорошая практика, чтобы привыкнуть к этому. Изменение '-execdir
' на '-exec
' и '$PWD${0#?}
' на '$0
' должно привести к тому же результату в этом случае../
'). В этом примере все сопоставленные пути являются абсолютными (т. Е. Начинаются с '/
'), потому что '~/
' раскрывается до абсолютного пути к домашнему каталогу текущего пользователя и является единственным аргументом пути.$0
' И '$1
' - это позиционные параметры, используемые для правильного цитирования аргументов. Если это не сделано правильно, команда уязвима для произвольных имен файлов.${0#?}
' лишает первого символа$0
, то есть '.
'.Для печати каждой подходящей строки следует имя файла:
Этот вариант использует '
-H
' вместо '-l
' и помечает имя файла, а не путь к файлу. '${0:2}
' удаляет первые два символа$0
, то есть './
', но, очевидно, не распознаетсяsh
.Конечно, подстраивайтесь под свои нужды.
источник