4 votos

¿Cómo puedo buscar en mi disco entero de un archivo sin llegar de forma recursiva atrapado en /volumes?

Estoy buscando un archivo txt que contiene una palabra. Sin embargo, al buscar en mi disco duro (o en mi TimeCapsule de copia de seguridad) siempre me quedar atascado en una búsqueda recursiva de /Volúmenes/unidades de Disco Duro, etc).

El vínculo permanente (o softlink, no estoy seguro) que me está causando nunca para completar la búsqueda.

¿Cómo puedo buscar en todo el disco duro (o unidad de copia de seguridad) de un archivo sin estancarse en la recursividad?

4voto

Phill Puntos 126

Uso locate, grep o find en la línea de comandos.

Abrir Aplicaciones>Utilidades>Terminal y usar:

  1. sudo locate -0 '*.txt' | xargs -0 grep WORD 2>/dev/null

    Sustituir la PALABRA con la palabra que desea buscar. Este es por lejos el más rápido método.

    Me gustaría recomendar para recrear la base de datos buscar primero para mejorar la precisión:

    sudo /usr/libexec/locate.updatedb

    Tenga en cuenta que en OS X, locate de la base de datos es creada por el usuario nobody. Eso significa que los archivos ocultos a nobody no será indexado. Usted puede modificar /usr/libexec/locate.updatedb y comentario (es decir, el prefijo #) de esta sección:

    if [ "$(id -u)" = "0" ]; then
         rc=0
         # 2013-03-08 jaume Correct mktemp
         export FCODES=`mktemp --tmpdir updatedbXXXX`
         chown nobody $FCODES
         tmpdb=`su -fm nobody -c "$0"` || rc=1
         if [ $rc = 0 ]; then
             install -m 0444 -o nobody -g wheel $FCODES /var/db/locate.database
         fi
         rm $FCODES
         exit $rc
     fi
    

    así que es indizado por el usuario root (esto se aplica a OS X 10.8 (Mountain Lion), en otras versiones compatibles con OS X locate de mayo de índice de archivos de forma diferente).

  2. sudo grep -R --exclude-dir '/Volumes/<OS volume>' --exclude-dir '/Volumes/MobileBackups' --exclude-dir '/.Spotlight*' --exclude-dir '/.MobileBackups' --exclude-dir '/.DocumentRevisions*' --include '*.txt' WORD / 2>/dev/null

    Sustituir la PALABRA con la palabra que desea buscar y <OS volume> con el nombre de su volumen del sistema operativo. El grep opciones que se utilizan son:

    • -R: realiza una búsqueda recursiva en la ruta especificada, que es, en /. Si usted busca su TimeCapsule de copia de seguridad, reemplace / con algo como /Volumes/TimeCapsule.

    • --exclude-dir: excluye las carpetas especificadas. Como se puede ver, excluyo el centro de atención, la carpeta de Versiones y locales TimeMachine carpetas. Si desea buscar en su disco duro local sólo cuando el TimeCapsule está montada, añadir --exclude-dir /Volumes/TimeCapsule.

    • --include '*.txt': indica grep a la búsqueda de los archivos que coinciden *.txt.

    Además:

    • 2>/dev/null: envía los errores de a /dev/null , de modo que usted no los ve.
  3. sudo find / ! -path '/.Spotlight*' ! -path '/Volumes/<OS volume>/*' ! -path '/Volumes/MobileBackups/*' ! -path '/.MobileBackups/*' ! -path '/.DocumentRevisions*' -name *.txt -type f -exec grep -H WORD {} + 2>/dev/null

    De nuevo, sustituir la PALABRA con la palabra que desea buscar y <OS volume> con el nombre de su volumen del sistema operativo. Como antes, 2>/dev/null envía errores a /dev/null , de modo que usted no los ve, y si usted busca su TimeCapsule de copia de seguridad, reemplace / con algo como /Volumes/TimeCapsule.

    El find opciones que se utilizan son:

    • ! -path: excluir rutas especificadas. Si desea buscar en su disco duro local sólo cuando el TimeCapsule está montada, añadir ! -path /Volumes/TimeCapsule/*.

    • -name *.txt: búsqueda de archivos con el nombre *.txt. Como se puede ver, excluyo el centro de atención, la carpeta de Versiones y locales TimeMachine carpetas.

    • -type f: busca sólo los archivos, ignorar los enlaces simbólicos, carpetas, etc.

    • grep -H WORD {}: grep archivo de WORD. -H fuerzas grep a imprimir el nombre del archivo.

La salida de cualquiera de los comandos de arriba se parece a esto:

filename: matched line

por ejemplo, cuando la búsqueda de 'GNU':

/usr/local/share/doc/p7zip/DOCS/readme.txt:7-Zip is free software distributed under the GNU LGPL 
/usr/local/share/doc/p7zip/DOCS/readme.txt:1) You can compile and use compiled files under GNU LGPL rules, since 
/usr/local/share/doc/p7zip/DOCS/readme.txt:  copying.txt    - GNU LGPL license
/usr/local/share/doc/xz/history.txt:    Alexandre Sauvé helped converting the build system to use GNU

Si quieres hacer un insensible a mayúsculas-minúsculas de búsqueda, reemplace grep con grep -i por encima.

0voto

zimbatm Puntos 2525

Usted puede utilizar el programa EasyFind. Se puede buscar dentro de archivos y tiene una bonita interfaz gráfica de usuario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X