Quickly find and open a pdf among a collection of thousands of unsorted pdfs through fzf (fuzzy finder)
Requirements. Make sure the following requirements are satisfied:
pdftotext. This comes with the texlive distribution on linux,
On ubuntu, sudo apt-get install poppler-utils . fzf: https://github.com/junegunn/fzfGNU grep, ag (silver searcher).Install binary. Do either one of the two steps below:
go and go get.
With a working golang installation, do
go get github.com/bellecp/fast-p
It will fetch the code and its dependencies,
compile and create an executable fast-p in the /bin folder of your go
installation, typically ~/go/bin. Make sure the command fast-p can be
found (for instance, add ~/go/bin to your $PATH.)fast-p can be found. For instance,
put the binary file fast-p in ~/custom/bin and add export
PATH=~/custom/bin:$PATH to your .bashrc.Tweak your .bashrc. Add the following code to your .bashrc
p () {
open=xdg-open # this will open pdf file withthe default PDF viewer on KDE, xfce, LXDE and perhaps on other desktops.
ag -U -g ".pdf$" \
| fast-p \
| fzf --read0 --reverse -e -d $'\t' \
--preview-window down:80% --preview '
v=$(echo {q} | tr " " "|");
echo -e {1}"\n"{2} | grep -E "^|$v" -i --color=always;
' \
| cut -z -f 1 -d $'\t' | tr -d '\n' | xargs -r --null $open > /dev/null 2> /dev/null
}
ag -U -g ".pdf$" with another command that returns a list of pdf files.open=... by your favorite PDF viewer, for instance open=evince or open=okular.brew install bellecp/fast-p/fast-pdf-finder
The above brew formula is experimental. Please report any issues/suggestions/feedback at https://github.com/bellecp/fast-p/issues/11
.bashrcp () {
local open
open=open # on OSX, "open" opens a pdf in preview
ag -U -g ".pdf$" \
| fast-p \
| fzf --read0 --reverse -e -d $'\t' \
--preview-window down:80% --preview '
v=$(echo {q} | gtr " " "|");
echo -e {1}"\n"{2} | ggrep -E "^|$v" -i --color=always;
' \
| gcut -z -f 1 -d $'\t' | gtr -d '\n' | gxargs -r --null $open > /dev/null 2> /dev/null
}
ag -U -g ".pdf$" with another command that returns a list of pdf files.open=... by your favorite PDF viewer, for instance open=evince or open=okular.Remark: On OSX, we use the command line tools gcut, gxargs, ggrep, gtr which are the GNU versions
of the tools cut, xargs, grep, tr. This way, we avoid the specifics of the versions of these tools pre-installed on OSX,
and the same .bashrc code can be used for both OSX and GNU Linux systems.
Use the command p to browse among the PDF files in the current directory and its subdirectories.
The first run of the command will take some time to cache the text extracted from each pdf. Further runs of the command will be much faster since the text extraction will only apply to new pdfs.
To clear the cache (which contains text extracted from PDF), you can run 'fast-p --clear-cache'. This will safely remove the file located at:
~/.cache/fast-p-pdftotext-output/fast-p_cached_pdftotext_output.db
For older versions, please manually delete the cache file found at
~/.cache/fast-p_cached_pdftotext_output.db
On Ubuntu desktop (tested in 18.04), one may add a keyboard shortcut to launch a new terminal running the p command right away.
With the following script, the new terminal window will automatically close after choosing a PDF.
Create a file ~/.fast-p-rc with
source .bashrc
p;
sleep 0.15; exit;
and in Ubuntu Settings/Keyboard, add a custom shortcut that runs the command
gnome-terminal -- sh -c "bash --rcfile .fast-p-rc".

Yes, see https://github.com/bellecp/fast-p/blob/master/p but using the go binary as explained above is recommended for speed and interoperability.
$ claude mcp add fast-p \
-- python -m otcore.mcp_server <graph>