Linux ofrece algunas formas diferentes de búsqueda, y cada una tiene sus méritos. Te vamos a enseñar cómo utilizarlas para que puedas hacer búsquedas más precisas. Estos comandos sobresalen en diferentes tareas y aquí te mostramos cómo elegir la herramienta adecuada para el trabajo.
Tienes muchas opciones cuando se trata de comandos para buscar y encontrar en Linux. ¿Porqué? Bueno, cada uno tiene sus especialidades y se desempeñan mejor que los demás en ciertas circunstancias. Podrías pensar en ellos como una especie de navaja suiza para buscar. Vamos a ver cada hoja a su vez y descubrir sus fortalezas particulares.
1.- Comando find
El comportamiento del comando find es difícil de determinar por prueba y error. Una vez que comprendes la sintaxis, comienzas a apreciar su flexibilidad y potencia.
La forma más sencilla de usar find es simplemente escribir «find» y presionar enter.
find
Usado de esta manera, find se comporta como ls, pero enumera todos los archivos en el directorio actual y aquellos en subdirectorios.
Algunas implementaciones find requieren que coloques el «.» para el directorio actual. Si este es el caso con tu versión de Linux, usa el siguiente comando:
find .
Para tener find desde la carpeta raíz, utiliza este comando:
find /
Para comenzar la búsqueda desde tu carpeta de inicio, usa este comando:
find ~
Uso del find con patrones de archivo en Linux
Para ser el comando find algo más que una versión de recursión automática ls, debemos proporcionarle algo para buscar. Podemos proporcionar nombres de archivo o patrones de archivo. Los patrones hacen uso de comodines donde * significa cualquier cadena de caracteres y ? significa cualquier carácter individual.
Se deben citar los patrones para que funcionen correctamente. Es fácil olvidar hacer esto, pero si no cita el patrón comodín findno podrá ejecutar correctamente el comando que le dio.
Con este comando, buscaremos en la carpeta actual archivos que coincidan con el patrón «*. * S». Esto significa cualquier nombre de archivo que tenga una extensión de archivo que termine en «s». Usamos la opción -name para decir a find que estamos pasando un nombre de archivo o un patrón de nombre de archivo.
find . -name "*.*s"
Debes tener en cuenta que dos de las extensiones de archivo tienen dos caracteres y uno tiene tres caracteres. Esto se debe a que usamos el patrón «*. * S». Si solo hubiésemos querido las extensiones de archivo de dos caracteres, habríamos usado «*.? S».
Si hubiésemos sabido de antemano que estábamos buscando archivos «.js» de JavaScript, podríamos haber sido más específicos en nuestro patrón de archivos. Además, ten en cuenta que puedes usar comillas simples para ajustar el patrón si lo prefieres.
find . -name '*.js'
2.- Comandos locate y mlocate
Muchas distribuciones de Linux solían tener una copia locate incluida con ellas. Esto fue reemplazado por el comando mlocate, que era una versión mejorada y actualizada de locate. Cuando mlocate se instala en un sistema, modifica el comando locate para que lo use mlocate incluso si escribes locate.
Se verificaron las versiones actuales de Ubuntu, Fedora y Manjaro para ver si tenían versiones preinstaladas de estos comandos. Ubuntu y Fedora tienen ambos comandos incluidos. Así que con este comando lo intalarás en Manjaro:
sudo pacman -Syu mlocate
En Ubuntu, puedes usar locate y mlocate indistintamente. En Fedora y Manjaro debes escribir locate, pero el comando lo ejecuta el sistema mediante mlocate. Ahora, si usas la opción –version con locate, verás que el comando que responde es en realidad mlocate.
locate --version
Linux: base de datos locate
La mayor ventaja que locate tiene es la velocidad. Cuando utilizas el comando find, se desvía y realiza una búsqueda en tu sistema de archivos. Por ello, el comando locate funciona de manera muy diferente. Realiza una búsqueda en la base de datos para determinar si lo que está buscando está en tu pc. Eso hace que la búsqueda sea mucho más rápida.
Por supuesto, plantea una pregunta obvia sobre la base de datos. ¿Qué asegura que la base de datos esté actualizada? Cuando mlocate se instala, generalmente coloca una entrada en cron.daily. Esto se ejecuta todos los días (muy temprano en la mañana) y actualiza la base de datos.
Para verificar si esta entrada existe, utiliza este comando:
ls /etc/cron.daily/*loc*
Decirle a locate cuántos resultados deseas
Deberías saber que hay muchos archivos del tipo que estás buscando. Solo necesitas ver los primeros. O tal vez solo desees que se te recuerde en qué directorio están y no necesitas ver todos los nombres de archivo.
Usando la opción -n (número) puedes limitar la cantidad de resultados que locate te devolverán. En este comando, hemos establecido un límite de 10 resultados.
locate .html -n 10
Como verás, el comando locate responde enumerando los primeros 10 nombres de archivos coincidentes que recupera de la base de datos.
3.- Comando which
El comando which busca a través de los directorios en tu ruta e intenta localizar el comando que estás buscando. Te permite determinar qué versión de un programa o comando se ejecutará cuando escribas su nombre en la línea de comando.
Imagina que tenemos un programa llamado «geoloc». Sabemos que está instalado en la computadora, pero no sabemos dónde está ubicado. Debe estar en algún lugar de la ruta porque cuando escribimos su nombre, se ejecuta. Podemos usarwhich para localizarlo con este comando:
which geoloc
which informa que el programa se encuentra en /usr/local/bin.
Podemos verificar si hay otras copias del programa en otras ubicaciones dentro de la ruta utilizando la opción -a (todos).
which -a geoloc
Esto nos muestra que tenemos el programa geoloc en dos lugares. Por supuesto, la copia /usr/local/bin será encontrada primero por el shell Bash cada vez, por lo que tener el programa en dos lugares no tiene sentido.
Eliminar la versión /usr/bin/geolocte ahorrará un poco de capacidad en el disco duro. Más importante aún, también evitará problemas creados por alguien que actualiza manualmente el programa y lo hace en el lugar equivocado.
4.- Comando whereis
El comando whereis es similar al comando which, pero es más informativo. Además de la ubicación del archivo de comando o programa, whereis también informa dónde se encuentran las páginas de manual y los archivos de código fuente. En la mayoría de los casos, los archivos de código fuente no estarán en tu PC, pero si lo están, whereis informará sobre ellos.
El ejecutable binario, las páginas man y el código fuente a menudo se denominan «paquete» para dicho comando. Si deseas saber dónde se encuentran los diversos componentes del paquete para el comando diff, tienes que escribir lo siguiente en el terminal:
whereis diff
whereis responde enumerando la ubicación de las páginas diff man y el archivo binario diff.
Para restringir los resultados para que solo muestren la ubicación del binario (en efecto, haz que whereis funcione como which) usa la opción -b (binario).
5.- Comando whatis
Este comando se utiliza para buscar rápidamente en las páginas del «man» (manual). Proporciona descripciones resumidas en una línea del término que le has pedido que busque.
whatis man
whatis encuentra dos descripciones coincidentes. Imprime una breve descripción para cada resultado. También enumera la sección del manual que contiene cada descripción completa.
Para abrir el manual en la sección que describe el comando man, utiliza el siguiente comando:
man 1 man
Como verás, el manual se abre en la sección man (1), en la página del manual.
6.- Comando apropos
El comando apropos es similar a whatis, pero tiene algunas campanas y silbatos más. Busca a través de los títulos de las páginas de manual y las descripciones de una línea buscando el término de búsqueda. Así como también enumera las descripciones coincidentes de la página de manual en la ventana de terminal.
La palabra apropos significa «relacionado con» o «concerniente», por lo que el comando apropos tomó su nombre de esto. Para buscar cualquier cosa relacionada con el comando groups, puedes escribir esto en el terminal:
apropos groups
Como podrás ver, apropos enumera los resultados en la ventana del terminal.
Usar más de un término de búsqueda en Linux
Puedes usar más de un término de búsqueda en la línea de comando. apropos buscará páginas de manual que contengan cualquiera de los términos de búsqueda que vas a escribir o los que quieres saber.
apropos chown chmod
Los resultados se enumeran como antes. En este caso, hay una sola entrada para cada uno de los términos de búsqueda.
¡Tienes más opciones en Linux!
Todos estos comandos tienen más opciones y te recomendamos que leas las páginas de manual de los comandos que tienen todas las distros de este genial sistema operativo. Por lo pronto, tienes aquí las más impotantes.
Aquí hay un resumen rápido para cada comando:
- find: proporciona una función de búsqueda granular y rica en funciones para buscar archivos y directorios.
- locate: proporciona una búsqueda rápida basada en bases de datos para programas y comandos.
- which: busca en $PATH para encontrar archivos ejecutables.
- whereis: busca en el $PATH para encontrar archivos ejecutables, páginas de manual y archivos de código fuente.
- whatis: busca en las descripciones de una línea del «man» (manual) las coincidencias con el término de búsqueda.
- apropos: busca en la página del manual con más fidelidad que whatis, para encontrar coincidencias con el término o términos de búsqueda.
La lista de comandos útiles para Linux es interminable, solo tienes que sacar tu investigador interior y descubrir los comandos que más te sean más provechosos.
¿Tienes alguna pregunta o problema relacionado con el tema del artículo? Queremos ayudarte.
Deja un comentario con tu problema o pregunta. Leemos y respondemos todos los comentarios, aunque a veces podamos tardar un poco debido al volumen que recibimos. Además, si tu consulta inspira la escritura de un artículo, te notificaremos por email cuando lo publiquemos.
*Moderamos los comentarios para evitar spam.
¡Gracias por enriquecer nuestra comunidad con tu participación!