aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/file-search
blob: 130b90c68a5fa310831e47b56285f55a7ea00255 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh -eu

cache=/tmp/file_search_results.cache
append() { find "$1" -maxdepth 1 -printf "%p\n" 2> /dev/null || true; }
appendRecursive() { find "$1" -printf "%p\n" 2>/dev/null || true; }
removeDuplicates() { awk '!visited[$0]++' "$1" | sponge "$1"; }

{ [ ! -f "$cache" ] || [ "${1:-}" = "update" ]; } && \
  {
    append "$HOME";
    append "$HOME"/.local;
    append "$HOME"/Desktop;
    append "$HOME"/Shares/Projects;
    appendRecursive "$HOME"/.vim;
    appendRecursive "$HOME"/.local/bin;
    appendRecursive "$HOME"/.config;
    appendRecursive "$HOME"/Music;
    appendRecursive "$HOME"/Books;
    appendRecursive "$HOME"/Videos;
    appendRecursive "$HOME"/Documents;
    appendRecursive "$HOME"/Downloads;
    appendRecursive "$HOME"/Pictures;
  } \
    | grep -vE '(undodir)' > "$cache"

[ "${1:-}" = "update" ] && removeDuplicates "$cache" && exit;

xdg-open "$(rofi -font "ubuntu 12" -matching regex -padding 20 -dmenu -i -p 'Files' < "$cache")"