Como excluir os diretórios do NFS com o find?

7

Eu preciso procurar por arquivos que não tenham usuário OU nenhum grupo.

find / -nouser -o -nogroup

Acho que está tudo bem. Mas não quero pesquisar os compartilhamentos NFS. Como posso excluir os compartilhamentos NFS no comando find?

    
por gasko peter 06.02.2013 / 15:50

2 respostas

4

Com o GNU find, você pode usar o predicado -fstype :

find / -fstype nfs -prune -o \( -nouser -o -nogroup \) -print
Tendo dito isso, a abordagem de hymie provavelmente faz mais sentido: listar em branco o FS que você deseja pesquisar, em vez de listar em preto aqueles que você não deseja pesquisar.

Se você quiser incluir apenas jfs2 sistemas de arquivos (assumindo que / está em jfs2 ), então, você precisa escrever:

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

Não escreva:

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

Como enquanto isso impediria que find imprimisse arquivos no sistema de arquivos não-jfs2, isso não impediria que ele rastreasse esses sistemas de arquivos não-jfs2 (para os quais você precisa de -prune ).

Note que -a ( AND que é implícito se omitido) tem precedência sobre -o ( OR ), então você precisa observar se os parênteses são necessários ou não.

O comando correto acima é curto para:

find / \( \( ! -fstype jfs2 \) -a -prune \) -o \
  \( \( -nouser -o -nogroup \) -a -print \)
    
por 06.02.2013 / 17:19
7

O mais próximo que você provavelmente conseguirá é usar -xdev , que significa "Não desça diretórios em outros sistemas de arquivos". Em seguida, você precisará especificar quais sistemas de arquivos você precisa querer pesquisar.

    
por 06.02.2013 / 16:17

Tags