Найти определенный каталог и игнорировать другие

Мне нужно найти все ипланеты на одном сервере, и я подумал использовать эту команду:

find / type d -name https-* |  uniq

Но в то же время мне нужно игнорировать некоторые каталоги/файлы. Я пытался использовать !, но это не всегда срабатывало. У меня есть такая команда:

find / type d -name https-* ! -name https-admserv* ! -name conf_bk* ! -name alias* ! -name *db* ! -name ClassCache* |  uniq

Мне нужно игнорировать все это. Каталоги admserv, conf_bk, alias и tmp и файлы *.db* В основном мне нужно найти это:

/opt/mw/iplanet/https-daniel.com
/opt/https-daniel1.com
/apps/https-daniel2.com

Мне нужно только найти имя каталога. Как я могу игнорировать все остальное?
Спасибо.


person radicaled    schedule 10.04.2015    source источник
comment
Если вы хотите пропустить весь каталог, используйте -prune.   -  person Barmar    schedule 10.04.2015
comment
Кроме того, вы должны поместить все аргументы с подстановочными знаками в кавычки, иначе подстановочные знаки будут развернуты в текущем каталоге.   -  person Barmar    schedule 10.04.2015


Ответы (1)


Используйте -prune, чтобы избежать рекурсии по каталогам:

find / \( -type d \( -name 'https-admserv*' -o -name 'conf_bk*' -o -name 'alias*' -o -name 'tmp' \) -prune -o -type d -name 'https-*' -print

Нет необходимости игнорировать какие-либо файлы. Вы выбираете только https-* каталога, поэтому все остальное игнорируется.

И нет необходимости подключаться к uniq, так как find никогда не создает дубликатов.

person Barmar    schedule 10.04.2015