URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6587
[ Назад ]

Исходное сообщение
"find: исключить некоторые каталоги из поиска"

Отправлено phpcoder , 06-Июл-07 13:45 
Здравствуйте!

Мне требуется найти все файлы core. Но find / -name core ищет очень уж долго. Поэтому я решил это оптимизировать: не искать в некоторых каталогах (/dev, /sys, /proc, /service). Не получается сказать find'у, чтобы искал везде, начиная с корня, и исключая эти каталоги. При этом я не могу сказать ему, к примеру, искать только на ext3 ФС, потому что /service тоже на ext3 да и не гибко это получится.

Пробовал так (на CentOS 4.3):

find / -a -not /dev -a -not /sys -a -not /proc -a -not /service -wholename core
find: paths must precede expression

find \( / -a \! /dev -a \! /sys -a \! /proc -a \! /service \) -wholename core
find: paths must precede expression

Такое возможно?

Заранее спасибо за ответы.


Содержание

Сообщения в этом обсуждении
"find: исключить некоторые каталоги из поиска"
Отправлено perece , 06-Июл-07 15:12 
>Здравствуйте!
>
>Мне требуется найти все файлы core. Но find / -name core ищет
>очень уж долго. Поэтому я решил это оптимизировать: не искать в
>некоторых каталогах (/dev, /sys, /proc, /service). Не получается сказать find'у, чтобы
>искал везде, начиная с корня, и исключая эти каталоги. При этом
>я не могу сказать ему, к примеру, искать только на ext3
>ФС, потому что /service тоже на ext3 да и не гибко
>это получится.
>
>Пробовал так (на CentOS 4.3):
>
>find / -a -not /dev -a -not /sys -a -not /proc -a
>-not /service -wholename core
>find: paths must precede expression
>
>find \( / -a \! /dev -a \! /sys -a \! /proc
>-a \! /service \) -wholename core
>find: paths must precede expression
>
>Такое возможно?
>
>Заранее спасибо за ответы.
если "find -mount" не устраивает, то только извращениями типа
for i in `ls -1A /`
do find $i -wholename core
done

ибо путь в синопсисе файнда _один_, и он не является частью expression (а всякие -a используются именно для частей выражения)

\^P^/


"find: исключить некоторые каталоги из поиска"
Отправлено vic , 06-Июл-07 15:40 
есть другой путь:
# echo "/tmp" > /proc/sys/kernel/core_pattern
и core файлы будут создаваться в каталоге /tmp

"find: исключить некоторые каталоги из поиска"
Отправлено jd , 07-Июл-07 05:01 
У меня работает так:

find / \( -path /dev -o -path /sys -o -path /proc -o -path /service \) -prune -o -name core -print

GNU find version 4.1


"find: исключить некоторые каталоги из поиска"
Отправлено phpcoder , 09-Июл-07 08:37 
>У меня работает так:
>
>find / \( -path /dev -o -path /sys -o -path /proc -o
>-path /service \) -prune -o -name core -print

Спасибо! Кажется это как раз то что надо!