Как исключить каталоги NFS с помощью find?


9

Мне нужно искать файлы, у которых нет пользователя ИЛИ нет группы.

find / -nouser -o -nogroup

Я думаю, что это нормально. Но я не хочу искать акции NFS. Как я могу исключить общие ресурсы NFS в команде find?


2
Попробуйте find / -fstype ext4 -nouser -o -nogroupзаменить ext3 и т. Д., Если вы не используете ext4
doneal24

1
пожалуйста,
опубликуйте

@ DougO'Neal ты должен опубликовать это как ответ.
Тим Кеннеди

1
@ DougO'Neal, это не остановит findспуск в nfs FS, только чтобы не печатать файлы, которые он там найдет.
Стефан Шазелас

Для использования -exec с чем-то вроде duобъединения -fstypeи -xdev(aka -mount) кажется необходимым
Герт ван ден Берг

Ответы:


7

С помощью GNU find вы можете использовать -fstypeпредикат:

find / -fstype nfs -prune -o \( -nouser -o -nogroup \) -print

Сказав это, подход hymie, вероятно, имеет больше смысла: внесите в белый список то, что FS вы хотите искать, а не в черный список тех, которые вы не хотите искать.

Если вы хотите включить только jfs2файловые системы (при условии , /на jfs2), то вам нужно написать это:

find / ! -fstype jfs2 -prune -o \( -nouser -o -nogroup \) -print

Не пиши это:

find / -fstype jfs2 \( -nouser -o -nogroup \) -print

Хотя это остановит findпечать файлов в файловой системе не jfs2, это не помешает сканировать те файловые системы не jfs2 (которые вам нужны -prune).

Обратите внимание, что -a( И неявный, если не указан ) имеет приоритет над -o( ИЛИ ), поэтому вам нужно посмотреть, нужны ли скобки или нет.

Вышеуказанная правильная команда коротка для:

find / \( \( ! -fstype jfs2 \) -a -prune \) -o \
  \( \( -nouser -o -nogroup \) -a -print \)

10

Самое близкое, что вы, вероятно, получите, это использовать -xdev, что означает «Не спускать каталоги в других файловых системах». Затем вам необходимо указать , какие файловые системы вы действительно хотите найти.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.