polecenie find / grep bez wyszukiwania zamontowanych udziałów

34

Kiedy użyłem polecenia find, prawie zawsze muszę przeszukiwać lokalne dyski. Ale prawie zawsze mam bardzo duże udziały sieciowe, które są uwzględniane podczas wyszukiwania. Czy istnieje prosty sposób na wykluczenie tych z polecenia find, grep i innych podobnych poleceń? Przykład:

znajdź / nazwa .vimrc

Flotsam N. Jetsam
źródło

Odpowiedzi:

46

Użyj -fstype localopcji, aby znaleźć:

find / -fstype local -name .vimrc

Jeśli chcesz wykluczyć tylko określone ścieżki, możesz użyć -prune:

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

Aktualizacja:

localPsuedo-fstype jest dostępny w wersji z dnia okaże się, że pochodzi z OS X, ale nie jest w GNU find ( fstypes rozpoznawanych przez GNU find ).

Jeśli używasz GNU find (tak jak w większości systemów Linux), zamiast tego będziesz chciał użyć -mount:

find / -mount -name .vimrc
Doug Harris
źródło
czy to też działa na grep?
Flotsam N. Jetsam
1
Nie sądzę, żeby grep miał taką opcję. Zwykle używałem findpotoku do greppokazanego w tej odpowiedzi: superuser.com/questions/80033/… . Ostatnio używałem zamiast tego ack( betterthangrep.com ), ale ackwydaje się, że nie mam opcji wyszukiwania tylko lokalnych dysków.
Doug Harris
Moja edycja została odrzucona, dlatego dodam komentarz. Zasadniczo pierwszy przykład jest błędny, ponieważ musisz go dodać, -prunew przeciwnym razie będzie on przechodził przez niepożądane systemy plików. Drugi przykład, jak sądzę, miał być -pathzamiast, -namewięc zignoruje ścieżkę. FWIW ... ostatni przykład działa, pozostaje w „bieżącym systemie plików”, więc nie przechodzi przez inne.
rogerdpack
20

man find przedstawia:

-xdev Nie schodź z katalogów w innych systemach plików.

pingwin
źródło
2
-xdevjest taki sam jak -mountFWIW ... :)
rogerdpack
0

Pierwotne pytanie dotyczyło tylko lokalnego dysku, więc dla kompletności oto, czego użyłem;

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

Tak długo, jak twoja fstab jest poprawnie skonfigurowana, powinna przeszukiwać tylko dyski lokalne; tzn. montowania cifs powinny mieć tę ostatnią flagę ustawioną na 0. Podłączyłem OR dla systemów plików xfs, kiedy zaczęliśmy przechodzić do RHEL7, powinny one być ustawione na 0, ponieważ nie są przeznaczone do reorganizacji dysku po tylu restartach.

Mam nadzieję, że to pomaga.

Shaun Saunders
źródło