Comment exclure les répertoires NFS avec find?

9

J'ai besoin de rechercher des fichiers sans utilisateur OU sans groupe.

find / -nouser -o -nogroup

Je pense que c'est OK. Mais, je ne veux pas rechercher les partages NFS. Comment puis-je exclure les partages NFS dans la commande find?

gasko peter
la source
2
Essayez de find / -fstype ext4 -nouser -o -nogroupremplacer ext3, etc. si vous n'utilisez pas ext4
doneal24
1
veuillez poster ceci comme réponse
gasko peter
@ DougO'Neal, vous devez poster cela comme réponse.
Tim Kennedy
1
@ DougO'Neal, cela n'empêcherait pas findde descendre dans nfs FS, juste de ne pas imprimer les fichiers qu'il y trouverait.
Stéphane Chazelas
Pour utiliser -exec avec quelque chose comme ducombiner -fstypeet -xdev(aka -mount) semble nécessaire
Gert van den Berg

Réponses:

7

Avec GNU find, vous pouvez utiliser le -fstypeprédicat:

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

Cela dit, l'approche de hymie a probablement plus de sens: liste blanche ce que vous voulez rechercher plutôt que liste noire ceux que vous ne voulez pas rechercher.

Si vous souhaitez inclure uniquement les jfs2systèmes de fichiers (en supposant que ce /soit activé jfs2), vous devez l'écrire:

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

Ne l'écrivez pas:

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

Comme si cela arrêterait findd'imprimer des fichiers dans un système de fichiers non jfs2, cela ne l'empêcherait pas d'explorer ces systèmes de fichiers non jfs2 (dont vous avez besoin -prune).

Notez que -a( ET qui est implicite s'il est omis) a priorité sur -o( OU ), vous devez donc vérifier si des parenthèses sont nécessaires ou non.

La commande correcte ci-dessus est l'abréviation de:

find / \( \( ! -fstype jfs2 \) -a -prune \) -o \
  \( \( -nouser -o -nogroup \) -a -print \)
Stéphane Chazelas
la source
10

Le plus proche que vous obtiendrez probablement est d'utiliser -xdev, ce qui signifie «Ne descendez pas de répertoires sur d'autres systèmes de fichiers». Ensuite , vous aurez besoin de spécifier quels systèmes de fichiers que vous ne voulez rechercher.

hymie
la source