24

Когда я использовал команду find, мне почти всегда приходилось искать локальные диски. Но у меня почти всегда установлены супер-большие сетевые ресурсы, и они включены в поиск. Есть ли простой способ исключить те, что в команде find, grep и других подобных командах? Пример:

найти / -имя .vimrc

3 ответа3

36

Используйте -fstype local чтобы найти:

find / -fstype local -name .vimrc

Если вы хотите исключить только определенные пути, вы можете использовать -prune:

find / -name /path/to/ignore -prune -o -name .vimrc

Обновить:

local psuedo-fstype доступен в версии find, которая поставляется с OS X, но отсутствует в GNU find (fstypes распознается GNU find).

Если вы используете GNU find (как используется в большинстве систем linux), вместо этого вы захотите использовать -mount:

find / -mount -name .vimrc
11

man find шоу:

-xdev Не спускать каталоги на другие файловые системы.

0

Первоначальный вопрос заключался в том, чтобы найти только на локальном диске, поэтому для полноты картины вот что я использовал;

for PART in `awk '(!/^#/ && $6 != "0" || $3 == "xfs" ) { print $2 }' /etc/fstab 2>/dev/null`; do find $PART -xdev -name .vimrc -print 2>/dev/null; done

Пока ваш fstab настроен правильно, он должен искать только локальные диски; т. е. для монтирования cifs этот конечный флаг должен быть установлен в 0. Я включил OR для файловых систем xfs, когда мы начали переходить на RHEL7, они также должны быть установлены в 0, так как они не предназначены для перезапуска диска после стольких перезагрузок.

Надеюсь, это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .