Si bien find es sin duda una de las utilidades de línea de comandos más populares y poderosas para la búsqueda de archivos en Linux, no es lo suficientemente rápido para situaciones en las que necesita resultados instantáneos. Si desea buscar un archivo en su sistema a través de la línea de comando y la velocidad es la máxima prioridad, entonces hay otro comando que puede usar:Localizar .
En este tutorial, discutiremos el ubicar Comando usando ejemplos fáciles de entender. Tenga en cuenta que todas las instrucciones/ejemplos mencionados aquí se han probado en Ubuntu 16.04 LTS, y el ubicar la versión que hemos usado es 0.26.
1. Cómo usar el comando de localización en Linux
El comando de localización es muy fácil de usar. Todo lo que tiene que hacer es pasarle el nombre de archivo que desea buscar.
locate [filename]
Por ejemplo, si quiero buscar todos los nombres de archivo que tienen la cadena 'dir2' en ellos, entonces puedo hacerlo usando la localización de la siguiente manera:
Nota :El comando 'localizar dir2' (sin asteriscos) también servirá como localizar implícitamente reemplaza el nombre que pasa (di NOMBRE) con *NOMBRE*.
2. Cómo funciona el comando de localización o por qué es tan rápido
La razón por la que la localización es tan rápida es porque no lee el sistema de archivos para el archivo buscado o el nombre del directorio. En realidad, se refiere a una base de datos (preparada por el comando updatedb ) para encontrar lo que el usuario está buscando y, en función de esa búsqueda, produce su salida.
Si bien este es un buen enfoque, tiene sus inconvenientes. El problema principal es que después de que se crea cada nuevo archivo o directorio en el sistema, debe actualizar la base de datos de la herramienta para que funcione correctamente. De lo contrario, el comando no podrá encontrar archivos/directorios creados después de la última actualización de la base de datos.
Por ejemplo, si trato de encontrar archivos con nombres que contengan la cadena 'para buscar' en el directorio 'Descargas' de mi sistema, el buscar El comando produce un resultado en la salida:
Pero cuando trato de realizar la misma búsqueda usando el comando de localización, no produce ningún resultado.
Esto significa que las búsquedas de ubicación de la base de datos no se actualizaron después de que se creó el archivo en el sistema. Entonces, actualicemos la base de datos, lo cual se puede hacer usando el updatedb dominio. Así es como lo haces:
sudo updatedb
Y ahora, cuando ejecuto el mismo comando de localización nuevamente, muestra archivos en la salida:
Del mismo modo, después de eliminar un archivo o directorio, debe asegurarse de que la base de datos de localización se haya actualizado; de lo contrario, el comando seguirá mostrando el archivo en su salida cuando se busque.
3. Cómo hacer que la localización imprima el número o el recuento de entradas coincidentes en la salida
Como hemos visto, el comando de localización produce el nombre de los archivos coincidentes junto con sus rutas completas o absolutas en la salida. Pero si lo desea, puede hacer que la herramienta elimine toda esta información y, en su lugar, simplemente imprima el número o el recuento de las entradas coincidentes. Esto se puede hacer usando -c opción de línea de comandos.
4. Cómo forzar locate para imprimir solo las entradas que corresponden a archivos existentes
Como ya discutimos anteriormente en este artículo, si un archivo se elimina del sistema, hasta que actualice la base de datos de localización nuevamente, el comando seguirá mostrando ese nombre de archivo en la salida. Sin embargo, para este caso específico, puede omitir la actualización de la base de datos y seguir teniendo resultados correctos en la salida usando -e opción de línea de comando.
Por ejemplo, eliminé el archivo 'filetosearch.txt' de mi sistema. Esto fue confirmado por el comando de búsqueda, que ya no pudo buscar el archivo:
Pero cuando realicé la misma operación usando la localización, todavía mostraba el archivo en la salida:
Y sabemos por qué:porque la base de datos de localizar no se actualizó después de que se eliminó el archivo. Sin embargo, usando la -e opción hizo el truco:
Esto es lo que dice la página del manual de localización sobre esta opción:"Imprimir solo las entradas que hacen referencia a los archivos existentes en el momento en que se ejecuta la localización".
5. Cómo hacer que la localización ignore las distinciones de mayúsculas y minúsculas
De forma predeterminada, la operación de búsqueda que realiza el comando de localización distingue entre mayúsculas y minúsculas. Pero puede obligar a la herramienta a ignorar las distinciones de mayúsculas y minúsculas usando -i opción de línea de comando.
Por ejemplo, tengo dos archivos en mi sistema, llamados 'newfiletosearch.txt' y 'NEWFILETOSEARCH.txt'. Entonces, como puede ver, los nombres de los archivos son los mismos, solo que sus casos son diferentes. Si pregunta ubicar para buscar, digamos, "*tosearch*", solo mostrará el nombre en minúsculas en su salida:
Pero el uso de la opción de línea de comandos -i obliga al comando a ignorar las mayúsculas y minúsculas, y ambos nombres de archivo se producen en la salida:
6. Cómo separar entradas de salida con ASCII NUL
De forma predeterminada, las entradas de salida que produce el comando de localización se separan mediante el carácter de nueva línea (\n). Pero si lo desea, puede cambiar el separador y tener el ASCII NUL en lugar de una nueva línea. Esto se puede hacer usando el -0 opción de línea de comando.
Por ejemplo, ejecuté el mismo comando que usamos en la última sección anterior, pero agregué la opción de línea de comando -0:
Entonces puede ver que el separador de nueva línea ya no está allí; se reemplazó con NUL.
7. Cómo ver información sobre la base de datos de localización
En caso de que desee saber qué base de datos está utilizando la ubicación, así como otras estadísticas sobre la base de datos, utilice la -S opción de línea de comandos.
8. Cómo buscar un nombre de archivo exacto usando localizar
De forma predeterminada, cuando busca un nombre de archivo utilizando la localización, el nombre que pasa, digamos NOMBRE, se reemplaza implícitamente por *NOMBRE*. Por ejemplo, si busco un nombre de archivo 'archivo de prueba', todos los nombres que coincidan con *archivo de prueba* se generarán en la salida:
Pero, ¿qué sucede si el requisito es buscar archivos con nombres que coincidan exactamente con 'archivo de prueba'? Bueno, en este caso, deberá usar expresiones regulares, que se pueden habilitar usando -r opción de línea de comandos. Entonces, así es como puede buscar solo 'archivo de prueba' usando expresiones regulares:
locate -r /testfile$
Si eres nuevo en las expresiones regulares, dirígete aquí.
Conclusión
Locate ofrece muchas más opciones, pero las que discutimos aquí deberían ser suficientes para darle una idea básica sobre la utilidad de línea de comandos, así como para comenzar. Le recomendamos que primero pruebe todas las opciones descritas aquí en su máquina Linux y luego cambie a otras que puede encontrar en la página de manual de la herramienta.
En caso de cualquier duda o consulta, no dude en dejar un comentario.