¿Cómo puedo buscar un archivo en toda mi unidad sin quedarme atascado recursivamente en / Volúmenes?

4

Estoy buscando un archivo de texto que contenga una palabra. Sin embargo, cuando busco en mi disco duro (o en mi copia de seguridad de TimeCapsule) siempre me quedo atascado en una búsqueda recursiva de / Volumes / Hard Drive (etc.).

El enlace físico (o enlace blando, no estoy seguro) hace que nunca complete la búsqueda.

¿Cómo puedo buscar en todo el disco duro (o en la unidad de copia de seguridad) un archivo sin atascarme en una recursión?

    
pregunta random65537 07.03.2013 - 01:36

2 respuestas

4

Use locate , grep o find en la línea de comando.

Abra Aplicaciones > Utilidades > Terminal y use:

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

    Sustituya WORD con la palabra que desea buscar. Este es, con mucho, el método más rápido .

    Recomendaría recrear la base de datos de localización primero para mejorar la precisión:

    sudo /usr/libexec/locate.updatedb

    Tenga en cuenta que en OS X, el usuario locate crea la base de datos nobody . Eso significa que los archivos ocultos a nobody no serán indexados. Puede modificar /usr/libexec/locate.updatedb y comentar (es decir, prefijo con # ) 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
    

    para que se indexe bajo el usuario root (esto se aplica a OS X 10.8 (Mountain Lion), en otras versiones de OS X locate pueden indexar los archivos de manera 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

    Sustituya WORD con la palabra que desea buscar y <OS volume> con el nombre de su volumen de SO. Las opciones grep utilizadas son:

    • -R : realiza una búsqueda recursiva en la ruta especificada, es decir, en / . Si buscas en tu copia de seguridad de TimeCapsule, reemplaza / con algo como /Volumes/TimeCapsule .

    • --exclude-dir : excluye las carpetas especificadas. Como puede ver, excluyo Spotlight, la carpeta Versiones y las carpetas locales de TimeMachine. Si desea buscar en su unidad local solo mientras su TimeCapsule está montado, agregue --exclude-dir /Volumes/TimeCapsule .

    • --include '*.txt' : le dice a grep que busque archivos que coincidan con *.txt .

    Además:

    • 2>/dev/null : envía errores a /dev/null para que no los veas.
  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

    Nuevamente, sustituya WORD con la palabra que desea buscar y <OS volume> con el nombre de su volumen de SO. Como antes, 2>/dev/null envía errores a /dev/null para que no los vea, y si busca su copia de seguridad de TimeCapsule, reemplace / con algo como /Volumes/TimeCapsule .

    Las opciones find utilizadas son:

    • ! -path : excluye las rutas especificadas. Si desea buscar en su unidad local solo mientras su TimeCapsule está montado, agregue ! -path /Volumes/TimeCapsule/* .

    • -name *.txt : busca archivos con el nombre * .txt. Como ve, excluyo Spotlight, la carpeta Versiones y las carpetas locales de TimeMachine.

    • -type f : buscar solo archivos, ignorar enlaces simbólicos, carpetas, etc.

    • grep -H WORD {} : archivo grep para WORD. -H fuerza a grep a imprimir el nombre de archivo.

La salida de cualquiera de los comandos anteriores se ve así:

filename: matched line

por ejemplo, al buscar '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 desea realizar una búsqueda que no distinga mayúsculas y minúsculas, reemplace grep con grep -i arriba.

    
respondido por el jaume 07.03.2013 - 06:58
0

Puede usar el programa EasyFind . Puede buscar dentro de archivos y tiene una interfaz gráfica de usuario agradable.

    
respondido por el Thomas Tempelmann 19.03.2014 - 02:14

Lea otras preguntas en las etiquetas