Korzystam z opensuse 10.3 i lubię znać narzędzia wiersza poleceń do wyszukiwania wyrażeń w dużej liczbie plików pdf w katalogu. W systemie Windows XP wyszukiwanie w Eksploratorze pozwala na to, ale jest zbyt wolne. Czy są tu jakieś wskazówki grep?
search
grep
windows-search
lodziarz
źródło
źródło
Odpowiedzi:
źródło
W systemie Linux i Windows można używać programu Acrobat Reader, który ma polecenie przeszukiwania wielu plików.
Pod Linuksem istnieje Recoll, który utworzy indeks twoich plików pdf (i więcej) przy pierwszym uruchomieniu. Po zbudowaniu indeksu wyszukiwanie słów powinno być bardzo szybkie; wyszukiwanie fraz powinno być rozsądne. Upewnij się, że
pdftotext
polecenie jest zainstalowane przed uruchomieniem Recoll; pod Debianem i Ubuntu jest wpoppler-utils
pakiecie, nie wiem o Suse.Lub możesz bezpośrednio przekonwertować pliki na tekst i użyć grep w plikach tekstowych za pomocą poniższych poleceń.
źródło
pdftotext
(które narzędzia, takie jak Recoll, wykonają automatycznie).Adobe Reader X spełnia swoje zadanie i to nie umożliwi wyszukanie ramach całego katalogu i podkatalogów, nie tylko wewnątrz pliku, ale nie jest programem wiersza poleceń.
źródło
recoll
ręcznie instalowane w Debianie, teraz próbuję uczynić go użytecznym dla moich pracowników z systemem Windows.Aby rekurencyjnie wyświetlić listę wszystkich plików w katalogu domowym, które mają rozszerzenie pliku PDF i zawierają wiersz pasujący do wyrażenia regularnego
[iI]n Haskell
, na przykład, możesz wydać:Uwagi:
-exec
lub,xargs
ponieważ ze względów bezpieczeństwa uważam, że dobrą praktyką jest przyzwyczajenie się do tego. Zmiana „-execdir
na”-exec
i „$PWD${0#?}
na$0
” powinna w tym przypadku osiągnąć ten sam wynik../
'). W tym przykładzie wszystkie dopasowane ścieżki są bezwzględne (tzn. Zaczynają się od „/
”), ponieważ „~/
” jest rozwinięte do bezwzględnej ścieżki do katalogu domowego bieżącego użytkownika i jest to jedyny argument ścieżki.$0
” I „$1
” są parametrami pozycyjnymi używanymi w taki sposób, aby poprawnie cytować argumenty. Jeśli nie zostanie to wykonane poprawnie, polecenie jest podatne na dowolne nazwy plików.${0#?}
” usuwa pierwszy znak$0
, tzn. „.
”.Aby wydrukować każdą pasującą linię poprzedzoną nazwą pliku:
Ten wariant używa „
-H
” zamiast „-l
” i etykietuje nazwę pliku zamiast ścieżki pliku. „${0:2}
” usuwa pierwsze dwa znaki$0
, tj. „./
”, ale najwyraźniej nie jest rozpoznawany przezsh
.Oczywiście dostosuj do swoich potrzeb.
źródło