Nejnovější:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
Podle data:
- listopad 2021
- leden 2019
- prosinec 2017
- prosinec 2016
- květen 2014
- duben 2014
- listopad 2013
- duben 2013
- duben 2011
- únor 2011
- leden 2011
- srpen 2010
- květen 2010
- březen 2010
- leden 2010
- říjen 2009
- duben 2009
- únor 2009
- říjen 2008
- září 2008
- srpen 2008
- duben 2008
- březen 2008
- únor 2008
Téma:
Vyhledávání lokálních PDF podle obsahu
Search local PDFs by content [czech]
Dost často potřebuji rychle najít nějakou informaci z přednáškových slidů, které mám uložené ve formátu PDF. Nepoužívám žádný nástroj na indexaci obsahu počítače (i když poslední dobou experimentuji se Stringi), takže pro mě jedinou možností jak prohledat PDF soubory různě rozházené po složkách bylo otevření Adobe Acrobat Readeru a použít jeho těžkopádný klikací nástroj pro vyhledávání. Asi už jsem zdegenerovaný, ale když chci rychle něco najít, raději bych použil příkaz v konzoli.
Okular (úžasný prohlížeč dokumentů z KDE 4) bohužel funkci na prohledávání více souborů nemá. To mě přivedlo na myšlenku napsat si k tomu nějaké Bashové udělátko. Zde je výsledek:
karry@myKubuntu:/media/data/skola/OBP/Lectures - Vraný$ ls 01_superspective.pdf 02_method_lookup.pdf 07_reflection.pdf 10_object_features.pdf 11_just_in_time_2.pdf 02_MethodDispatch.pdf 06_evolution.pdf 08_garbage_collection.pdf 11_just_in_time.pdf karry@myKubuntu:/media/data/skola/OBP/Lectures - Vraný$ karry@myKubuntu:/media/data/skola/OBP/Lectures - Vraný$ pdfsearch "inheritance" search "inheritance" in "/media/data/skola/OBP/Lectures - Vraný/*.pdf" 1 "/media/data/skola/OBP/Lectures - Vraný/07_reflection.pdf" 1 "/media/data/skola/OBP/Lectures - Vraný/10_object_features.pdf" summary found: 2 in 2 files karry@myKubuntu:/media/data/skola/OBP/Lectures - Vraný$
Ke správné funkci scriptu je zapotřebí mít v systému nainstalován slocate a poppler-utils (či jinou implementaci pdftotext). Soubor ke stažení je zde… Užijte si to :)
#!/bin/bash if [ $# -lt 1 ] ; then echo "simple cli tool for search PDFs by content" echo "this script don\'t work in path constaints symlinks (locate feature)" echo "and need builded slocate database (and installed locate of course)" echo echo "usage:" echo " pdfsearch expression" echo " it search from current directory recursively" exit 1; fi exp=$1 path=`pwd`"/*.pdf" echo "search \""$exp"\" in \""$path"\"" echo files=0 sum=0 IFS=`echo -en "\n\b"` # change internal bash separator for pdffile in `locate "$path"` ; do count=`pdftotext "$pdffile" - | grep -c "$exp"` if [ $count -gt 0 ] ; then echo -e $count" \t\""$pdffile"\"" ## uncoment these lines, if you would see searched line #pdftotext "$pdffile" - | grep --color=always "$exp" #echo files=$(( $files + 1 )) sum=$(( $sum + $count )) fi done echo echo "summary found: "$sum" in "$files" files"