1 #!/bin/sh
2 # lazy find
3
4 # GNU All-Permissive License
5 # Copying and distribution of this file, with or without modification,
6 # are permitted in any medium without royalty provided the copyright
7 # notice and this notice are preserved. This file is offered as-is,
8 # without any warranty.
9
10 ## help function
11
12 function helpu {
13 echo " "
14 echo "Fuzzy search for filename."
15 echo "$0 [--match-case|--path] filename"
16 echo " "
17 exit
18 }
19
20 ## set variables
21
22 MATCH="-iname"
23 SEARCH="."
24
25 ## parse options
26
27 while [ True ]; do
28 if [ "$1" = "--help" -o "$1" = "-h" ]; then
29 helpu
30 elif [ "$1" = "--match-case" -o "$1" = "-m" ]; then
31 MATCH="-name"
32 shift 1
33 elif [ "$1" = "--path" -o "$1" = "-p" ]; then
34 SEARCH="${2}"
35 shift 2
36 else
37 break
38 fi
39 done
40
41 ## sanitize input filenames
42 ## create array, retain spaces
43
44 ARG=( "${@}" )
45 set -e
46
47 ## catch obvious input error
48
49 if [ "X$ARG" = "X" ]; then
50 helpu
51 fi
52
53 ## perform search
54
55 for query in ${ARG[*]}; do
56 /usr/bin/find "${SEARCH}" "${MATCH}" "*${ARG}*"
57 done