comando find / grep senza cercare condivisioni montate


34

Quando ho usato il comando find, ho quasi sempre bisogno di cercare le unità locali. Ma ho quasi sempre montate condivisioni di rete super grandi e queste sono incluse nella ricerca. C'è un modo semplice per escludere quelli nel comando find, grep e altri comandi simili? Esempio:

trova / -name .vimrc

Risposte:


46

Usa l' -fstype localopzione per trovare:

find / -fstype local -name .vimrc

Se si desidera escludere solo percorsi specifici, è possibile utilizzare -prune:

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

Aggiornare:

Il localpsuedo-fstype è disponibile nella versione di find fornita con OS X, ma non è presente in GNU find ( fstypes riconosciuti da GNU find ).

Se stai usando GNU find (come viene usato sulla maggior parte dei sistemi Linux), ti consigliamo invece di usare -mount:

find / -mount -name .vimrc

funziona anche per grep?
Flotsam N. Jetsam,

1
Non credo che grep abbia questa opzione. Di solito usavo findpipe grepcome mostrato in questa risposta: superuser.com/questions/80033/… . Ultimamente, ho usato ack( betterthangrep.com ), ma acknon sembra avere un'opzione per cercare solo le unità locali.
Doug Harris,

La mia modifica è stata respinta per questo, quindi solo per farne un commento. Fondamentalmente il primo esempio è sbagliato, perché è necessario aggiungerlo -pruneo attraverserà comunque i file system indesiderati. Credo che il secondo esempio fosse destinato a essere -pathinvece di quello, -namequindi ignorerà il percorso. FWIW ... l'ultimo esempio funziona, rimane sul "filesystem corrente", quindi non attraversa gli altri.
rogerdpack

20

man find Spettacoli:

-xdev Non discendere directory su altri filesystem.


2
-xdevè lo stesso di -mountFWIW ... :)
rogerdpack

0

La domanda originale era trovare solo sul disco locale, quindi per completezza, ecco cosa ho usato;

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

Fintanto che fstab è configurato correttamente, dovrebbe cercare solo i dischi locali; vale a dire, i montaggi cifs dovrebbero avere quel flag finale impostato su 0. Ho incluso l'OR per i filesystem xfs quando abbiamo iniziato ad andare su RHEL7, dovrebbero essere impostati su 0 anche perché non sono pensati per eseguire il reorg del disco dopo così tanti riavvii.

Spero che sia d'aiuto.

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.