У меня, наверное, один глупый вопрос:
Я работаю на удаленном сервере под Solaris, используя ssh
и моя задача состоит в том, чтобы найти определенные файлы в каталогах, соответствующих шаблону оболочки, но не идти рекурсивно глубже.
Предположим, у меня есть следующая иерархия каталогов:
dir-a/
file-a
file-b
dir-c/
file-a
dir-b/
file-a
file-b
и я хочу найти все файлы с именем file-a
в каталогах dir-a
& dir-b
но не в каталоге dir-c
. Хорошо, пока все хорошо - это действительно просто с помощью одной команды find
:
find dir-{a,b} -mindepth 1 -maxdepth 1 -name 'file-a'
но проблема в том, что на этой машине установлена действительно старая версия find
поэтому она не имеет опций -mindepth
и -maxdepth
. Я пытался использовать -prune
:
find dir-{a,b} \( -type d -prune \) -o -name file-a -print
но он вообще ничего не печатает, потому что самые первые каталоги в дереве поиска - это сами каталоги dir-a
и dir-b
поэтому find
просто пропустите их содержимое, как это и должно быть. Если бы я мог использовать -mindepth
я бы просто пропустил эти "корневые" каталоги с -mindepth 1
и получил бы другое рабочее решение, но, как я уже сказал, не могу. depth
не помогла также, потому что dir-a
и dir-b
являются последними в дереве поиска find, если оно использовалось, и dir-a/dir-c/file-a теперь снова выводится.
Да, и в этой старой find
также нет опций -regex
и -wholepath
поэтому я не могу использовать сложные шаблоны имен для исключения более глубоких файлов из результатов форм.
Есть ли у вас какие-либо предположения?