Use locate
, grep
o find
en la línea de comando.
Abra Aplicaciones > Utilidades > Terminal y use:
-
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).
-
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.
-
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.