comando find / grep sin buscar recursos compartidos montados


34

Cuando utilicé el comando find, casi siempre necesito buscar las unidades locales. Pero, casi siempre tengo montados recursos compartidos de red súper grandes y estos se incluyen en la búsqueda. ¿Hay alguna manera fácil de excluir aquellos en el comando find, grep y otros comandos similares? Ejemplo:

encontrar / -name .vimrc

Respuestas:


46

Use la -fstype localopción para encontrar:

find / -fstype local -name .vimrc

Si desea excluir solo rutas específicas, puede usar -prune:

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

Actualizar:

El localpsuedo-fstype está disponible en la versión de find que viene con OS X, pero no está en GNU find ( fstypes reconocido por GNU find ).

Si está utilizando GNU find (como se usa en la mayoría de los sistemas Linux), en su lugar querrá usar -mount:

find / -mount -name .vimrc

¿eso también funciona para grep?
— Flotsam N. Jetsam

1
No creo que grep tenga esa opción. Usualmente usé findpipe to grepcomo se muestra en esta respuesta: superuser.com/questions/80033/… . Últimamente, he estado usando ack( betterthangrep.com ) en su lugar, pero ackno parece tener una opción para buscar solo unidades locales.
— Doug Harris

Mi edición fue rechazada por esto, así que solo lo hice un comentario. Básicamente, el primer ejemplo es incorrecto, porque necesita agregarlo -pruneo aún atravesará los sistemas de archivos no deseados. El segundo ejemplo, creo que estaba destinado a ser en -pathlugar de -namepor lo que ignorará el camino. FWIW ... el último ejemplo funciona, permanece en el "sistema de archivos actual", por lo que no atraviesa otros.
— rogerdpack

20

man find muestra:

-xdev No descienda directorios en otros sistemas de archivos.


2
-xdeves lo mismo que -mountFWIW ... :)
— rogerdpack

0

La pregunta original era encontrar solo en el disco local, así que, para completar, esto es lo que usé;

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

Siempre que su fstab esté configurado correctamente, solo debería buscar en los discos locales; es decir, los montajes cifs deberían tener ese indicador final establecido en 0. Incluí el OR para los sistemas de archivos xfs cuando comenzamos a ir a RHEL7, también deberían establecerse en 0, ya que no están destinados a hacer la reorganización del disco después de tantos reinicios.

Espero que ayude.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.