Latest:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
By month:
- November 2021
- January 2019
- December 2017
- December 2016
- May 2014
- April 2014
- November 2013
- April 2013
- April 2011
- February 2011
- January 2011
- August 2010
- May 2010
- March 2010
- January 2010
- October 2009
- April 2009
- February 2009
- October 2008
- September 2008
- August 2008
- April 2008
- March 2008
- February 2008
Topic:
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"