2015-04-10 2 views
0

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

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 

Мне нужно только, чтобы найти имя каталога. Как я могу игнорировать все остальные вещи?
Благодаря

+0

Если вы хотите пропустить весь каталог, используйте '-prune'. – Barmar

+0

Кроме того, вы должны поместить все аргументы с помощью подстановочных знаков внутри кавычек, иначе подстановочные знаки будут расширены в текущем каталоге. – Barmar

ответ

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 никогда не производит дубликатов.