2009-06-29 11 views
8

Hace poco cambié mi área de desarrollo web local al uso de MacPorts, en lugar de usar MAMP en mi Mac. Llegué a Python/Django y ya no necesitaba MAMP.¿Cómo es que el comando unix locate todavía muestra archivos/carpetas que ya no existen?

La cosa es, he desinstalado MAMP de la carpeta de Aplicaciones, con el archivo de preferencias también, pero ¿cómo es que cuando ejecuto el comando 'localizar MAMP' en el Terminal aún muestra todas mis/Aplicaciones/MAMP/cosas como si todo está ahí? Y cuando 'cd' en/Aplicaciones/MAMP/¿no existe?

¿Algo que ver con localizar es un tipo de sistema de búsqueda de índices, por lo tanto, estas viejas rutas de archivos se almacenan en caché? Explique por qué y cómo ordenarlo para que no se muestre más.

Respuesta

8

Tiene la idea correcta: locate usa una base de datos llamada 'locatedb'. Normalmente se actualiza mediante trabajos de cron del sistema (no estoy seguro de que en OS X); puede forzar una actualización con el comando updatedb. Ver http://linux-sxs.org/utilities/updatedb.html entre otros.


Además, si no encontrar los archivos que se esperaría, tenga en cuenta esta importante salvedad de la sección FALLOS locate(1) de la página de manual OSX':

The locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database.

+0

Por la misma razón, locate no muestra los archivos creados recientemente. Cualquier archivo creado desde la última actualizaciónb no se ve por locate. –

+0

En OSX 10.10, el cron del sistema que actualiza el db es '/ System/Library/LaunchDaemons/com.apple.locate.plist' –

+0

Además, si * no * encuentra los archivos que espera, tenga en cuenta esta advertencia importante de los BUGS sección de OSX '[locate (1)] (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/locate.1.html) man-page: 'The locate database es típicamente creado por el usuario '' nobody '' y la utilidad locate.updatedb (8) omite directorios que no son legibles para el usuario '' nadie '', el grupo '' nadie '' o el mundo. Por ejemplo, si su directorio HOME no es legible en todo el mundo, ninguno de sus archivos está en la base de datos. –

0

De hecho, el localizar el comando busca a través de un índice, por eso es bastante rápido. El índice es generado por el comando updatedb, que generalmente se ejecuta como un trabajo nocturno o semanal.

Para actualizarlo manualmente, simplemente ejecute updatedb.

0

De acuerdo con la página del manual, su base de datos se actualiza una vez por semana:

NAME 
    locate.updatedb -- update locate database 

SYNOPSIS 
    /usr/libexec/locate.updatedb 

DESCRIPTION 
    The locate.updatedb utility updates the database used by locate(1). It is typically run once a week by 
    the /etc/periodic/weekly/310.locate script. 
0

Tome un vistazo a la página de localice hombre

http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1

Verás que localizar a búsquedas base de datos, no su sistema de archivos real. Puede actualizar esa base de datos utilizando el comando updatedb.

Además, como se trata de una base de datos, a menos que la actualice con regularidad, busque los archivos que se encuentran en su sistema de archivos que no están en la base de datos.

6

Las demás respuestas son correctas sobre la necesidad de actualizar la base de datos de localización. Tengo este alias actualizar mi localizar DB:

alias update_locate='sudo /usr/libexec/locate.updatedb' 

que en realidad no uso localizar todo lo que mucho más ahora que he encontrado mdfind. Utiliza el índice de archivos de Spotlight, que OSX es mucho mejor para mantenerse actualizado en comparación con el ubicadob. También tiene bastante más poder en lo que puede buscar desde la línea de comando.

+0

Esto lleva una eternidad ... –

Cuestiones relacionadas