¿Cuál es la diferencia entre 'localizar' y 'encontrar' en Linux?

41

¿Por qué hay dos comandos tan similares en Linux? y normalmente cuáles son las circunstancias para usar cada uno de ellos?

zhanwu
fuente
66
Para obtener mejores respuestas en profundidad e integridad, vea esta respuesta en Unix y Linux .
Ese chico brasileño

Respuestas:

38

findbúsquedas en el sistema real. Es más lento pero siempre actualizado y tiene más opciones (tamaño, tiempo de modificación, ...)

locateusa una base de datos previamente construida (comando updatedb). Es mucho más rápido, pero utiliza una base de datos 'más antigua' y busca solo nombres o partes de ellos.

En cualquier caso, man findy man locatete ayudará más.

eumiro
fuente
1
... y updatedbhacer más o menos como la calle detrás find / -type f | gzip > locate.gz.
F. Hauri
10
unix.stackexchange.com/questions/60205/… responde a esta pregunta con más detalle.
chiflado sobre natty
3

Tanto las locatey findlos comandos encontrarán un archivo, pero funcionan de maneras muy diferentes.

locate funcionará en modo fuera de línea:

  • Para una explicación simple, la base de datos de indexación de archivos en el sistema Unix llamada slocate enumerará las ubicaciones de todos los archivos que se envían con el sistema Unix. Cuando ejecute locate, usará esa base de datos para buscar un archivo en particular. El problema locatees que si acaba de crear un archivo que ahora desea buscar, localizar no funcionará porque la base de datos de slocate no está actualizada. Para superar este problema, puede usar updatedbpara actualizar la base de datos de slocate . Ejecutar locatenuevamente ahora encontrará el archivo recién creado. Por lo tanto, muchos administradores de sistemas Linux utilizan un crontrabajo para actualizar regularmente la base de datos slocate .

find funcionará en modo en línea / "en tiempo real".

  • En realidad, irá y buscará en todos los directorios para encontrar el archivo específico especificado y examinará cada archivo uno por uno. Por lo tanto, requiere muchas llamadas de E / S.

Entonces, según la naturaleza, está claro que localizar es más rápido que encontrar pero encontrar es en tiempo real.

Espero que esto ayude a aclarar la idea. Todo lo mejor. :)

kazi Tanvir Ahsan
fuente
0

locate simplemente mira su base de datos e informa la ubicación del archivo.

find no utiliza una base de datos, atraviesa todos los directorios y sus subdirectorios y busca archivos que coincidan con el criterio dado.

anchal
fuente
0

Una alternativa al uso de find es el comando localizar. Este comando suele ser más rápido y puede buscar en todo el sistema de archivos con facilidad. Puede instalar el comando con apt-get:

sudo apt-get update
sudo apt-get install mlocate

La razón por la que localizar es más rápido que buscar es porque se basa en una base de datos de los archivos en el sistema de archivos. La base de datos generalmente se actualiza una vez al día con un script cron, pero puede actualizarla manualmente escribiendo:

sudo updatedb

Ejecute este comando ahora. Recuerde, la base de datos siempre debe estar actualizada si desea encontrar archivos recientemente adquiridos o creados.

m-tech
fuente