Cómo usar los comandos Find y Locate en Linux: Guía para principiantes
La línea de comandos es un instrumento muy poderoso que te permite ver y gestionar archivos en Linux. Si te interesa conocer de qué manera hacer búsquedas en una computadora o servidor con Linux, estás en el lugar indicado.
En esta nota, te daremos un panorama en primer lugar del comando find de Linux y también te enterarás todo lo que necesitás saber del comando locate. Ambos comandos te permitirán buscar cualquier archivo en tu computadora.
¿Por qué utilizar los comandos Find y Locate en Linux?
Los flamantes usuarios de Linux afirman que generalmente les confunde la ubicación de sus archivos en un servidor. La razón de esto puede que tenga su origen en que la mayoría de la gente está acostumbrada a operar con Windows o MacOS, que presentan un diseño de directorios más claro y sencillo de utilizar.
Si bien parte de eso, es cierto, Linux brinda a los usuarios más alternativas para buscar archivos utilizando ciertos comandos. Más allá de la búsqueda basada en filtros comunes, también es factible hallar archivos mediante permisos de usuario, tamaño, marcas de tiempo, etc.
Lo verdaderamente sensacional es que una vez que entendés el uso de los comandos, realizar búsquedas de archivos en tu plataforma Linux resulta extraordinariamente sencillo.
Para lograr eso, usaremos los comandos find y locate en Linux.
Un aspecto muy relevante que debemos atender es que utilizaremos un VPS con Ubuntu en esta guía. De esta manera, los pasos también tendrían que funcionar para Debian, CentOS, o cualquier otra distribución de Linux. Si no sabés cómo conectarte a un VPS, te recomendamos ver la siguiente guía antes de continuar.
Utilizando el comando Find en Linux
Vamos a empezar explicando el comando find en Linux y cómo utilizarlo.
La sintaxis básica
El comando find es el más usado para hallar y filtrar archivos en Linux. El diseño básico que presenta este comando es el siguiente:
find <startingdirectory> <options> <search term>
Empieza con la palabra clave find, que alerta a Linux de que lo que sigue se relaciona a la búsqueda de un archivo. El argumento <startingdirectory>
es el punto de origen de donde deseás comenzar la búsqueda. Es posible reemplazarlo con varios argumentos, incluyendo:
/ (slash) – busca en todo el sistema.
. (punto) – busca en la carpeta en la que estás trabajando actualmente (directorio actual).
~ (tilde) – para buscar desde tu directorio home.
Para saber cuál es tu directorio actual, utilizá el comando pwd.
El segundo argumento <options> se utiliza para tu archivo. Este podría referirse al nombre, tipo, fecha de creación del archivo, etc. El tercer argumento <searchterm> es donde se determinará el término de búsqueda principal.
Distintas maneras de usar el comando find en Linux
Veamos cuáles son las diferentes alternativas que Linux ofrece a los usuarios:
Búsqueda por nombre Ciertamente, el procedimiento más común y obvio para realizar la búsqueda de un archivo es utilizar su nombre. Para ejecutar una consulta de búsqueda simple utilizando el nombre del archivo, tenés que usar el comando find de la siguiente forma:
find . -name my-file
Utilizamos la opción -name y buscamos un archivo llamado my-file. Recordá que iniciamos la búsqueda en nuestro directorio actual utilizando el argumento . –punto-.
Tené en cuenta que el argumento -name busca términos diferenciando entre mayúsculas y minúsculas en Linux. Si sabés cuál es el nombre del archivo, pero no estás seguro de su uso de las mayúsculas y minúsculas, utilizá el comando find de la siguiente forma:
find . -iname my-file
Otra manera es que busques todos los archivos sin una palabra clave en el nombre. Podés realizarlo utilizando dos caminos. El primer procedimiento implica el uso de la palabra clave -not de la siguiente forma:
find . -not -name my-file
En el segundo, podés usar el signo de exclamación (!), aunque siempre deberá estar antecedido por el identificador de escape () para que Linux interprete que este es parte del comando find.
find . ! -name my-file
Otra manera es realizar búsqueda de varios archivos con un formato común como .txt:
find . -name “*.txt”
Esto registrará todos los archivos de texto comenzando con la carpeta actual.
Para finalizar, si tu intención es buscar un archivo específico por nombre y eliminarlo, utilizá el argumento -delete después del nombre del archivo:
find . -name my-file –delete
Búsqueda por tipo Linux ofrece a los usuarios registrar toda la información basada en sus tipos. Existen muchos filtros que podés utilizar:
d – directorio o carpeta f – archivo normal l – enlace simbólico c – dispositivos de caracteres b – dispositivos de bloque A continuación, podrás observar un ejemplo simple del uso del tipo de archivo para la búsqueda:
find / -type d
Esto va a mostrar un listado que incluye todos los directorios presentes en tu sistema de archivos, al haber iniciado la búsqueda desde nuestro directorio raíz con el símbolo de barra inclinada /.
También podés concatenar las opciones -type y -name para realizar tus búsquedas aún más específicas:
find / -type f -name my-file
Esto permitirá buscar archivos llamados my-file, exceptuando directorios o enlaces.
Búsqueda por fecha Si tu intención es buscar archivos en función de su fecha de acceso y los registros de fecha de modificación, Linux te brinda las herramientas necesarias para lograrlo. Existen 3 registros de tiempo de los cuales Linux realiza seguimiento en los archivos:
Tiempo de acceso (-atime) – Se refiere a la fecha más reciente en que el archivo fue leído o escrito. Tiempo de modificación (-mtime) – Se relaciona a la fecha más reciente en que se modificó el archivo. Hora de cambio (-ctime) – Tiene que ver con la fecha más reciente en que se actualizaron los metadatos del archivo.
Esta alternativa deberá utilizarse con un número que determina cuántos días transcurrieron desde que se accedió, modificó o cambió el archivo:
find / -atime 1
Este comando muestra todos los archivos a los que se accedió hace un día desde el momento actual.
Para lograr que las consultas sean más exactas se pueden agregar los signos más (+) y menos (-) antecediendo al número de días. Por ejemplo:
find / -mtime +2
Esto registrará todos los archivos que tienen un tiempo de modificación de más de dos días.
Para buscar todos los archivos cuyos metadatos se actualizaron hace menos de un día, tenés que ejecutar lo siguiente:
find / -ctime -1
Si bien no se utilizan frecuentemente, hay algunos argumentos adicionales que también están relacionados con las búsquedas por fecha. El argumento -mmin busca archivos modificados en base a minutos. Se puede utilizar así:
find / -mmin -1
Además, el argumento -newer es posible utilizarlo con el fin de comparar la antigüedad de dos archivos y hallar el más reciente.
find / -newer my-file
Obtendrás todos los archivos que han sido cambiados hace menos tiempo que tu archivo.
Búsqueda por tamaño Linux te ofrece la alternativa de buscar archivos según sus tamaños. La sintaxis básica para buscar archivos por tamaño es:
find <startingdirectory> -size <size-magnitude> <size-unit>
Podés especificar las siguientes unidades de tamaño:
c – bytes k – kilobytes M – megabytes G – gigabytes b – trozos de 512 bytes
El que sigue a continuación, es un simple ejemplo de cómo usar el comando find de Linux para los tamaños de archivo:
find / -size 10M
Esto hará que busque en tu sistema archivos que tengan exactamente 10 megabytes de tamaño. Al igual que cuando buscaste en función del tiempo, podés filtrar aún más tus búsquedas utilizando los signos más y menos:
find / -size +5G
El comando anterior registrará todos los archivos de tu disco que tengan más de 5 Gigabytes de tamaño.
Búsqueda por propiedad Linux te brinda la capacidad de determinar tus búsquedas según la propiedad del archivo. Para buscar archivos de un determinado propietario, se debe ejecutar el siguiente comando:
find / -user john
Esto devolverá una lista de todos los archivos que tiene el usuario llamado john. Parecido a los nombres de usuario, también es posible buscar archivos a través de nombres de grupo:
find / -group classroom
Búsqueda por permisos
Los usuarios tienen la posibilidad de buscar archivos basados en los permisos de los archivos con la opción -perm. Por ejemplo:
find / -perm 644
En Linux, 644 se relaciona a permisos de lectura y escritura. Lo que se traduce en que este comando se encargará de buscar todos los archivos que solo tienen permisos de lectura y escritura. Podés jugar con esta opción un poco más, de esta manera:
find / -perm -644
Al agregar un guión, se mostrarán todos los archivos que presenten al menos el permiso 644.
Podés leer e indagar más (en inglés) sobre los permisos y los diversos códigos correspondientes a otros permisos de Linux.
Otras opciones útiles disponibles Además de todos estos procedimientos de búsqueda de archivos, existen otras alternativas útiles que debes tener en cuenta.
Por ejemplo, para buscar archivos y carpetas vacíos en tu sistema, utilizá lo que sigue a continuación:
find / -empty
Asimismo, para buscar todos los ejecutables guardados en tu disco, usá la opción -exec:
find / -exec
Para buscar archivos legibles, podés ejecutar el siguiente comando:
find / -read
Como podés observar, hay un sinfín de alternativas disponibles para que los usuarios puedan adaptar sus consultas de acuerdo a sus demandas y necesidades puntuales. Por otro lado, investiguemos ahora el otro comando que se puede utilizar para buscar archivos en Linux.
Utilizando el comando Locate en Linux
El comando locate es una opción útil y ágil, ya que es más veloz que find para activar búsquedas. Esto se debe a que únicamente escanea tu base de datos de Linux en vez de hacerlo en todo el sistema. Además, la sintaxis es más fácil y sencilla de escribir.
De qué manera instalar el paquete locate
Por defecto, Linux no viene con el comando locate preinstalado. Para obtener el paquete, ejecutá los siguientes comandos en tu terminal:
sudo apt-get update
sudo apt-get install mlocate
La sintaxis básica
Ahora podés utilizar el comando para buscar archivos usando esta sintaxis:
locate [my-file]
Puede suceder que el comando locate estándar, en algunas ocasiones, muestre archivos que han sido borrados, si la base de datos no fue actualizada. La solución más recomendable es actualizar de forma manual la base de datos ejecutando lo siguiente:
sudo updatedb
Cómo usar el comando locate de Linux
Te detallamos a continuación las aplicaciones más comunes del comando locate de Linux.
Buscar por el nombre exacto del archivo
La sintaxis básica únicamente te permite buscar archivos que contengan el término de búsqueda. Si querés obtener el archivo con el nombre exacto, podés usar la opción -r y añadir el símbolo de dólar ($) al final del término de búsqueda, como por ejemplo:
locate -r my-file$
Contar el número de archivos Para saber con exactitud cuántos archivos aparecen en el resultado de la búsqueda, ingresa -c después del comando locate.
locate -c my-file
En lugar de registrar todos los archivos, te brindará el número total de ellos.
Ignorar distinción entre mayúsculas y minúsculas Usa -i en tu comando locate para ignorar la distinción entre mayúsculas y minúsculas. Por ejemplo:
locate -i my-file
Se mostrarán todos los archivos que contengan ese nombre, independientemente de las mayúsculas o minúsculas que se encuentren.
Mostrar archivos existentes Como ya hemos mencionado anteriormente, el comando locate de Linux puede incluso mostrarte un archivo eliminado si no has actualizado la base de datos. Por suerte, podés resolver esto usando la opción -e, así:
locate -e my-file
Al hacer esto, sólo obtendrás los archivos que existen en el momento de ejecutar el comando locate.
Desactivar los errores durante la búsqueda La opción -q evitará que cualquier error aparezca cuando se procese la búsqueda. Para poder activar esto, simplemente ingresá:
locate -q my-file
Limitar el número de resultados de búsqueda Si lo que intentás hacer es limitar el número de resultados de la búsqueda, -n fijate en el siguiente ejemplo:
locate my-file n 10
El script solamente mostrará los primeros 10 archivos que encuentre, incluso aunque haya más.
Última actualización