Added io-grep
[iomenu.git] / io-files
blobc6795a2c0c0cd091c7a2110a0f74730ac0f8df82
1 # Prompt a file to open in PAGER, with an history.  In less(1), 'v' to edit.
4 CACHE="${XDG_CACHE_HOME:-$HOME/.cache}"
7 get_path()
9         local files
11         printf %s "$HOME" && (
12                 printf '#\n# Recent files\n'
13                 [ -f "$CACHE/iomenu/files" ] && tac "$CACHE/iomenu/files"
15                 printf '#\n# All files\n'
16                 cd "$HOME"
17                 find . ! -path '*/.cache/*' ! -path '*/.git/*' | sed "s/./~/"
18         ) | iomenu -l 256 -s '#' | tee -a "$CACHE/iomenu/files" | cut -c 2-
21 update_history()
23         sort "$CACHE/iomenu/files" | uniq -d | while IFS='' read -r f
24         do
25                 printf '%s\n' "$(grep -Fxv "$f" "$CACHE/iomenu/files")" "$f" \
26                         > "$CACHE/iomenu/files"
27         done
29         files="$(tail "$CACHE/iomenu/files")"
30         printf '%s\n' "$files" > "$CACHE/iomenu/files"
34 main()
36         mkdir -p "$CACHE/iomenu"
38         local file="$(get_path)"
40         update_history
42         [ -f "$file" ] && exec $PAGER "$file"
46 main $@