Come escludere le directory NFS con find?


9

Devo cercare file che non hanno utenti o gruppi.

find / -nouser -o -nogroup

Penso che sia OK Ma non voglio cercare condivisioni NFS. Come posso escludere le condivisioni NFS nel comando find?


2
Prova a find / -fstype ext4 -nouser -o -nogroupsostituire ext3, ecc. Se non stai usando ext4
doneal24

1
si prega di inviare questo come risposta
Gasko Peter

@ DougO'Neal dovresti pubblicarlo come risposta.
Tim Kennedy,

1
@ DougO'Neal, che non smetterebbe finddi scendere in nfs FS, solo per non stampare i file che troverebbe lì.
Stéphane Chazelas,

Per usare -exec con qualcosa come ducombinare -fstypee -xdev(aka -mount) sembra necessario
Gert van den Berg

Risposte:


7

Con GNU find, puoi usare il -fstypepredicato:

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

Detto questo, l'approccio di hymie probabilmente ha più senso: elenca in bianco ciò che vuoi cercare anziché elencare in nero quelli che non vuoi cercare.

Se vuoi includere solo i jfs2file system (supponendo che /sia attivo jfs2), devi scriverlo:

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

Non scriverlo:

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

Come se ciò findimpedisse la stampa di file nel filesystem non jfs2, ciò non gli impediva di eseguire la scansione di quei filesystem non jfs2 (di cui hai bisogno -prune).

Si noti che -a( AND che è implicito se omesso) ha la precedenza su -o( OR ), quindi è necessario controllare se sono necessarie o meno parentesi.

Il comando corretto sopra è l'abbreviazione di:

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

10

Il più vicino che probabilmente otterrai sarà usare -xdev, il che significa "Non discendere le directory su altri filesystem". Allora è necessario specificare quale file system si fa desidera cercare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.