Я столкнулся с проблемой, когда мне нужно было ограничить глубину при поиске по нескольким путям (вместо просто.
).
Например:
$ find dir1 dir2 -name myfile -maxdepth 1
Это привело меня к альтернативному подходу, использующему -регулярное выражение. Суть:
-regex '(<list of paths | delimited>)/<filename>'
Таким образом, приведенное выше будет:
$ find dir1 dir2 -name myfile -regextype awk -regex '(dir1|dir2)/myfile' # GNU
$ find -E dir1 dir2 -name myfile -regex '(dir1|dir2)/myfile' # MacOS BSD
Без имени файла:
$ find dir1 dir2 -name myfile -maxdepth 1 # GNU
-regex '(<list of paths | delimited>)/<anything that's not a slash>$'
$ find dir1 dir2 -name myfile -regextype awk -regex '(dir1|dir2)/[^/]*$' # GNU
$ find -E dir1 dir2 -name myfile -regex '(dir1|dir2)/[^/]*$' # MacOS BSD
Наконец, для -maxdepth 2
регулярное выражение меняется на:'(dir1|dir2)/([^/]*/){0,1}[^/]*$'