summary refs log tree commit diff
path: root/Completion/Unix/Command/_find
blob: 8f80e36cf75e76ee47e0e9c43381311394f5fe60 (plain) (blame)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#compdef find gfind

local variant args

_pick_variant -r variant gnu=GNU $OSTYPE -version

case $variant in
  solaris*)
    args+=(
      '*-'{n,}'cpio:device:_files'
      '*-local'
    )
  ;|
  solaris*|darwin*)
    args+=( '*-xattr' )
  ;|
  solaris2.<10->|freebsd*|darwin*)
    args+=( '*-acl' )
  ;|
  solaris2.<11->|freebsd*|dragonfly*|darwin*|openbsd*|gnu)
    args+=(
      '*-amin:access time (minutes)'
      '*-cmin:inode change time (minutes)'
      '*-mmin:modification time (minutes)'
      '*-iname:name pattern to match (case insensitive)'
      '*-print0'
    )
  ;|
  netbsd*|freebsd*|dragonfly*|darwin*|gnu)
    args+=( '(-H -L)-P[never follow symlinks]' )
  ;|
  netbsd*|freebsd*|dragonfly*|openbsd*|darwin*|gnu)
    args+=( '-d[depth first traversal]' )
  ;|
  darwin*|freebsd*|gnu)
    args+=(
      '*-Bmin:birth time (minutes)'
      '*-Bnewer:file to compare (birth time):_files'
      '*-Btime:birth time (hours)'
    )
  ;|
  freebsd*|dragonfly*|darwin*|openbsd*|gnu)
    args+=(
      '*-anewer:file to compare (access time):_files'
      '*-cnewer:file to compare (inode change time):_files'
      '*-mnewer:file to compare (modification time):_files'
      '*-maxdepth:maximum search depth'
      '*-mindepth:minimum search depth'
      '*-path:path pattern to search:'
    )
  ;|
  freebsd*|dragonfly*|darwin*|gnu)
    args+=(
      '*-delete'
      '*-empty'
      '*-execdir:program: _command_names -e:*\;::program arguments: _normal'
      '*-gid:numeric group ID'
      '*-uid:numeric user ID'
      '*-noleaf'
      '*-lname:link pattern to search'
      '*-ilname:link pattern to search (case insensitive)'
      '*-ipath:path pattern to search (case insensitive)'
      '*-regex:regular expression to search'
      '*-iregex:regular expression to search (case insensitive)'
      '*-wholename:full path pattern to search' \
      '*-iwholename:full path pattern to search (case insensitive)'
      '*-ignore_readdir_race'
      '*-noignore_readdir_race'
      '*-okdir:program: _command_names -e:*\;::program arguments: _normal'
      '*-samefile:file to compare inode:_files' \
      '*-true'
      '*-false'
      '*-and'
      '*-or'
      '*-not'
    )
  ;|
  freebsd*|dragonfly*|gnu) args+=( '*-quit' ) ;|
  netbsd*|freebsd*|dragonfly*|darwin*)
    args+=(
      '-E[use extended regular expressions with -regex/-iregex]'
      '-X[warn if filename contains characters special to xargs]'
      '-f[specify file hierarchy to traverse]:path:_directories'
      '-s[traverse directories in sorted order]'
      "-x[don't span filesystems]"
      '*-flags:flags:_chflags'
    )
  ;|
  freebsd*|dragonfly*) args+=( '*-sparse' ) ;|
  darwin*) args+=( '*-xattrname:name' ) ;|
  gnu)
    args+=(
      '(- *)-help' '(-)--help'
      '(- *)-version' '(-)--version'
      '-D[print diagnostics]:debug option:(help tree search stat rates opt exec)'
      '-O+[enable query optimisation]:level:(1 2 3)'
      '*-daystart'
      '-regextype:regexp syntax:(emacs posix-awk posix-basic posix-egrep posix-extended)'
      '*-warn'
      '*-nowarn'
      '*-xautofs'
      '*-used:access after inode change (days)'
      '*-executable'
      '*-readable'
      '*-writable'
      '*-xtype:file type:((b\:block\ special\ file c\:character\ special\ file d\:directory p\:named\ pipe f\:normal\ file l\:symbolic\ link s\:socket))'
      '*-fls:output file:_files'
      '*-fprint:output file:_files'
      '*-fprint0:output file:_files'
      '*-fprintf:output file:_files:output format'
      '*-printf:output format'
    )
    [[ $OSTYPE = linux-gnu ]] && args+=( '*-context:SELinux context' )
  ;;
esac

_arguments $args \
  '(-L -P)-H[only follow symlinks when resolving command-line arguments]' \
  '(-H -P)-L[follow symlinks]' \
  '*-atime:access time (days)' \
  '*-ctime:inode change time (days)' \
  '*-depth' \
  '*-exec:program: _command_names -e:*\;::program arguments: _normal' \
  '*-follow' \
  '*-fstype:file system type:_file_systems' \
  '*-group:group:_groups' \
  '*-inum:inode number:' \
  '*-links:number of links:' \
  '*-ls' \
  '*-mount' \
  '*-mtime:modification time (days)' \
  '*-name:name pattern' \
  '*-newer:file to compare (modification time):_files' \
  '*-nogroup' \
  '*-nouser' \
  '*-ok:program: _command_names -e:*\;::program arguments: _normal' \
  '*-perm:file permission bits' \
  '*-print' \
  '*-prune' \
  '*-size:file size (blocks)' \
  '*-type:file type:((b\:block\ special\ file c\:character\ special\ file d\:directory p\:named\ pipe f\:normal\ file l\:symbolic\ link s\:socket))' \
  '*-user:user:_users' \
  '*-xdev' \
  '*-a' '*-o' \
  '*:directory:_files -/'