Tabla de contenidos
Linux ofrece seis formas diferentes de buscar, y cada una tiene sus ventajas. Vamos a demostrar cómo utilizar find
, locate
, which
, whereis
, whatis
, y apropos
. Cada uno sobresale en diferentes tareas; A continuación, le indicamos cómo elegir la herramienta adecuada para el trabajo.
Tiene muchas opciones cuando se trata de comandos para buscar y encontrar en Linux. ¿Porqué tantos? Bueno, cada uno tiene sus especialidades y se desempeñan mejor que los demás en determinadas circunstancias. Podrías pensar en ellos como una especie de navaja suiza para buscar. Vamos a mirar cada hoja por turno y descubrir sus puntos fuertes particulares.
El comando de búsqueda
El comportamiento del find
comando es difícil de determinar mediante prueba y error. Una vez que comprende la sintaxis , comienza a apreciar su flexibilidad y poder.
La forma más sencilla de usar find
es simplemente escribir find
y presionar enter.
encontrar
Usado de esta manera se find
comporta como ls
, pero enumera todos los archivos del directorio actual y los de los subdirectorios.
Algunas implementaciones de find
requieren que coloques el .
para el directorio actual. Si este es el caso con su versión de Linux, use el siguiente comando:
encontrar .
Para tener una find
búsqueda desde la carpeta raíz, usaría este comando:
encontrar /
Para iniciar la búsqueda desde su carpeta de inicio, use este comando:
encontrar ~
Uso de buscar con patrones de archivo
Para find
que sea algo más que una versión de recuperació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.
Los patrones deben citarse para que funcionen correctamente. Es fácil olvidarse de hacer esto, pero si no cita el patrón de comodín find
no podrá ejecutar correctamente el comando que le dio.
Con este comando, buscaremos en la carpeta actual los 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 -name
opción para decirle find
que estamos pasando un nombre de archivo o un patrón de nombre de archivo.
encontrar . -nombre "*. * s"
find
devuelve estos archivos coincidentes.
Tenga en cuenta que dos de las extensiones de archivo tienen dos caracteres y una tiene tres caracteres. Esto se debe a que usamos el patrón «*. * S». Si solo hubiéramos querido las extensiones de archivo de dos caracteres, habríamos usado «*.? S».
Si hubiéramos sabido de antemano que estábamos buscando archivos JavaScript «.js», podríamos haber sido más específicos en nuestro patrón de archivo. Además, tenga en cuenta que puede usar comillas simples para envolver el patrón si lo prefiere.
encontrar . -nombre '* .js'
Esta vez find
solo informa sobre los archivos JavaScript.
Ignorando el caso con encontrar
Si conoce el nombre del archivo que desea find
ubicar, puede pasarlo en find
lugar de un patrón. No es necesario que entre comillas el nombre del archivo si no hay comodines, pero es una buena práctica hacerlo todo el tiempo. Hacerlo significa que no se olvidará de usarlos cuando los necesite.
encontrar . -nombre 'Yelp.js'
Eso no devolvió nada. Pero es extraño, sabemos que ese archivo debe estar ahí. Intentemos de nuevo y digamos find
que ignoremos el caso. Lo hacemos usando la -iname
opción (ignorar el nombre del caso)
encontrar. -nombre 'Yelp.js'
Ese era el problema, el nombre del archivo comienza con una «y» minúscula y buscábamos con una «Y» mayúscula.
Subdirectorios recurrentes con encontrar
Una gran cosa find
es la forma en que busca de forma recursiva a través de subdirectorios. Busquemos archivos que comiencen con «mapa».
encontrar . -nombre "mapa *. *"
Se enumeran los archivos coincidentes. Tenga en cuenta que todos están en un subdirectorio.
Búsqueda de directorios con find
La -path
opción hace find
buscar directorios. Busquemos un directorio del que no podamos recordar el nombre, pero sabemos que termina con las letras «sobre».
encontrar . -ruta '* acerca de'
Se encuentra el directorio, simplemente se llama «acerca de» y está anidado dentro de otro directorio dentro del directorio actual.
Existe una -ipath
opción (ignorar la ruta de mayúsculas y minúsculas) que le permite buscar rutas e ignorar las mayúsculas y minúsculas, similar a la iname
opción – discutida anteriormente.
Usar atributos de archivo con buscar
find
puede buscar archivos que tengan atributos que coincidan con la pista de búsqueda. Por ejemplo, puede buscar archivos que estén vacíos usando la -empty
opción, independientemente de cómo se llamen.
encontrar . -vacío
Cualquier archivo de longitud de cero bytes aparecerá en los resultados de la búsqueda.
La -executable
opción encontrará cualquier archivo que se pueda ejecutar, como un programa o un script.
encontrar . -ejecutable
Los resultados muestran un archivo llamado “fix_aptget.sh”.
También contienen tres directorios, incluido ‘.’, El directorio actual. Los directorios se incluyen en los resultados porque el bit de ejecución se establece en sus permisos de archivo. Sin esto, no podría cambiar (“ejecutar”) esos directorios.
La opción de tipo
La -type
opción le permite buscar el tipo de objeto que está buscando. Vamos a proporcionar el indicador de tipo «f» como parámetro de la -type
opción porque queremos find
buscar archivos únicamente.
encontrar . ejecutable -tipo f
Esta vez, los subdirectorios no se enumeran. El archivo de secuencia de comandos ejecutable es el único elemento de los resultados.
También podemos solicitar find
que solo se incluyan directorios en los resultados. Para listar todos los directorios, podemos usar la -type
opción con el indicador de tipo “d”.
encontrar . tipo -d
En los resultados solo se enumeran los directorios y subdirectorios.
Uso de otros comandos con find
Puede realizar alguna acción adicional en los archivos que se encuentran. Puede hacer que los archivos pasen, a su vez, a algún otro comando.
Si necesitamos asegurarnos de que no haya archivos ejecutables en el directorio y subdirectorios actuales, podríamos usar el siguiente comando:
encontrar . -nombre "fix_aptget.sh" -exec chmod -x '{}' \;
El comando significa:
- Busque en el directorio actual un objeto con nombre llamado «fix_aptget.sh».
- Si lo encuentra, ejecute el
chmod
comando. - Los parámetros que se pasan
chmod
son-x
para eliminar los permisos ejecutables y'{}'
que representa el nombre de archivo del archivo encontrado. - El punto y coma final marca el final de los parámetros a los que se pasará
chmod
. Esto tiene que ‘escaparse’ precediéndolo con una barra invertida ‘\’.
Una vez que se haya ejecutado este comando, podemos buscar archivos ejecutables como antes, y esta vez no habrá ningún archivo en la lista.
Para ampliar nuestra red, podríamos usar un patrón de archivo en lugar del nombre de archivo que usamos en nuestro ejemplo.
Esta flexibilidad le permite buscar tipos de archivo específicos, o con patrones de nombre de archivo, y realizar alguna acción en los archivos coincidentes.
Buscar tiene muchas otras opciones , incluida la búsqueda de archivos por su fecha de modificación, archivos propiedad de un usuario o grupo, archivos que son legibles o archivos que tienen un conjunto específico de permisos de archivo.
Los comandos de localización y localización
Muchas distribuciones de Linux solían tener una copia de locate
incluido. Esto fue reemplazado por el mlocate
comando, que era una versión mejorada y actualizada de locate
.
Cuando mlocate
está instalado en un sistema, modifica el locate
comando para que realmente lo use mlocate
incluso si escribe locate
.
Se verificaron las versiones actuales de Ubuntu, Fedora y Manjaro para ver si tenían versiones de estos comandos preinstaladas en ellos. Ubuntu y Fedora incluían mlocate.
ambos.Tenía que ser instalado en Manjaro, con este comando:
sudo pacman -Syu mlocate
En Ubuntu, puede usar localizar e mlocate
indistintamente. En Fedora y Manjaro debe escribir locate
, pero el comando lo ejecuta mlocate
.
Si usa la --version
opción con locate
verá que el comando que responde es en realidad mlocate
.
localizar --version
Debido a que locate
funciona en todas las distribuciones de Linux que se probaron, lo usaremos locate
en nuestras explicaciones a continuación. Y es una letra menos que escribir.
La base de datos de localización
La mayor ventaja que locate
tiene es la velocidad.
Cuando usa el find
comando, se desvanece y realiza una búsqueda en su sistema de archivos. El locate
comando funciona de manera muy diferente. Realiza una búsqueda en la base de datos para determinar si lo que está buscando está en su computadora. Eso hace que la búsqueda sea mucho más rápida.
Por supuesto, plantea una pregunta obvia sobre la base de datos. ¿Qué garantiza que la base de datos esté actualizada? Cuando mlocate
está instalado, (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, use este comando:
ls /etc/cron.daily/*loc*
Si no encuentra una entrada allí, puede configurar una tarea automatizada para hacer esto por usted en el momento que elija.
¿Qué sucede si su computadora no está encendida en el momento en que se supone que se debe actualizar la base de datos? Puede ejecutar manualmente el proceso de actualización de la base de datos con el siguiente comando:
sudo updatedb
Usando localizar
Busquemos archivos que contengan la cadena «getlatlong». Con localizar, la búsqueda busca automáticamente cualquier coincidencia que contenga el término de búsqueda en cualquier lugar del nombre del archivo, por lo que no es necesario utilizar comodines.
localizar getlatlong
Es difícil transmitir velocidad en una captura de pantalla, pero casi de inmediato se enumeran los archivos coincidentes.
Decir localizar cuántos resultados desea
A veces, es posible que sepa que hay muchos archivos del tipo que busca. Solo necesitas ver los primeros. Quizás solo desee que le recuerden en qué directorio se encuentran, y no necesita ver todos los nombres de archivo.
Con la -n
opción (número) puede limitar la cantidad de resultados que locate
le devolverán. En este comando, hemos establecido un límite de 10 resultados.
localizar .html -n 10
locate
responde enumerando los primeros 10 nombres de archivo coincidentes que recupera de la base de datos.
Contar archivos coincidentes
Si solo desea saber la cantidad de archivos coincidentes y no necesita saber cómo se llaman o dónde están en su disco duro, use la opción -c (contar).
localizar -c .html
Entonces, ahora sabemos que hay 431 archivos con la extensión «.html» en esta computadora. Tal vez queramos echarles un vistazo, pero pensamos en echar un vistazo y ver cuántos había primero. Armados con ese conocimiento, sabemos que tendremos que canalizar la salida less
.
localizar .html | Menos
Y aquí están todos, o al menos, aquí está la parte superior de la larga lista de ellos.
Ignorando el caso con localizar
El -i
(ignorar locate
mayúsculas y minúsculas ) hace precisamente eso, ignora las diferencias en mayúsculas y minúsculas entre el término de búsqueda y los nombres de archivo en la base de datos. Si intentamos contar los archivos HTML nuevamente, pero proporcionamos por error el término de búsqueda en mayúsculas, no obtendremos ningún resultado.
localizar -c .HTML
Al incluir la -i
opción, podemos locate
ignorar la diferencia entre mayúsculas y minúsculas y devolver nuestra respuesta esperada para esta máquina, que es 431.
localizar -c -i .HTML
El estado de la base de datos de localización
Para ver el estado de la base de datos, use la -s
opción (estado). Esto hace locate
que se devuelvan algunas estadísticas sobre el tamaño y el contenido de la base de datos.
localizar -s
El que comando
El which
comando busca en los directorios en su ruta e intenta localizar el comando que está buscando. Le permite determinar qué versión de un programa o comando se ejecutará cuando escriba su nombre en la línea de comandos.
Imagina que tuviéramos un programa llamado geoloc
. Sabemos que está instalado en la computadora, pero no sabemos dónde se encuentra. Debe estar en la ruta en algún lugar porque cuando escribimos su nombre, se ejecuta. Podemos utilizar which
para localizarlo con este comando:
que geoloc
which
informa que el programa está ubicado en /usr/local/bin
.
Podemos verificar si hay otras copias del programa en otras ubicaciones dentro de la ruta usando la -a
opción (todas).
que -un geoloc
Esto nos muestra que tenemos el geoloc
programa en dos lugares.
Por supuesto, la copia en la /usr/local/bin
encontrará primero el shell Bash cada vez, por lo que tener el programa en dos lugares no tiene sentido.
Eliminar la versión en /usr/bin/geoloc
le ahorrará un poco de capacidad del 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. Luego se preguntan por qué no ven las nuevas actualizaciones cuando ejecutan el programa.
El comando whereis
El whereis
comando es similar al which
comando, 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 man (manual) y los archivos de código fuente . En la mayoría de los casos, los archivos del código fuente no estarán en su computadora, pero si lo están, whereis
los reportarán.
El ejecutable binario, las páginas de manual y el código fuente a menudo se denominan «paquete» para ese comando. Si desea saber dónde se encuentran los diversos componentes del paquete para el diff
comando, use el siguiente comando:
dónde está la diferencia
whereis
responde enumerando la ubicación de las diff
páginas de manual y el diff
archivo binario.
Para restringir los resultados para que solo muestren la ubicación del binario (en efecto, haga que whereis
funcione como which
) use la -b
opción (binario).
donde es -b diff
whereis
solo informa sobre la ubicación del archivo ejecutable.
Para restringir la búsqueda para informar solo en las páginas de -m
manual, use la opción (manual). Para restringir la búsqueda para informar solo sobre los archivos de código fuente, use la -s
opción (fuente).
Para ver las ubicaciones en las que whereis
busca, use la -l
opción (ubicaciones).
donde está -l
Las ubicaciones se enumeran para usted.
Ahora que sabemos las ubicaciones en las que se whereis
buscarán, podemos, si así lo elegimos, restringir la búsqueda a una ubicación o grupo de ubicaciones en particular.
La -B
opción (lista binaria) restringe la búsqueda de archivos ejecutables a la lista de rutas proporcionadas en la línea de comando. Debe proporcionar al menos una ubicación para whereis
realizar la búsqueda. La -f
opción (archivo) se utiliza para señalar el final de la ubicación y el inicio del nombre del archivo.
donde es -B / bin / -f chmod
whereis
busca en el único lugar en el que pedimos buscar. Allí es donde se encuentra el archivo.
También puede utilizar la -M
opción (lista manual) para restringir las búsquedas de páginas de manual a las rutas que proporciona en la línea de comandos. La -S
opción (lista de fuentes) le permite restringir la búsqueda de archivos de código fuente de la misma manera.
El comando whatis
El whatis
comando se utiliza para buscar rápidamente en las páginas man (manual). Proporciona descripciones resumidas de una línea del término que le solicitó que busque.
Comencemos con un ejemplo sencillo. Aunque parece el punto de partida de un debate filosófico profundo, solo estamos pidiendo whatis
que nos digamos qué significa el término «hombre».
que es hombre
whatis
encuentra dos descripciones coincidentes. Imprime una breve descripción de cada partido. También enumera la sección numerada del manual que contiene cada descripción completa.
Para abrir el manual en la sección que describe el man
comando, use el siguiente comando:
hombre 1 hombre
El manual se abre en la sección man (1), en la página de man
.
Para abrir el manual en la sección 7, en la página que analiza las macros que puede usar para generar páginas de manual, use este comando:
hombre 7 hombre
Se muestra la página de manual de las macros man.
Búsqueda en secciones específicas del manual
La -s
opción (sección) se utiliza para limitar la búsqueda a las secciones del manual que le interesan. Para whatis
restringir la búsqueda a la sección 7 del manual, utilice el siguiente comando. Tenga en cuenta las comillas alrededor del número de sección:
Whatis -s "7" man
Los resultados solo se refieren a la sección 7 del manual.
Usar whatis con comodines
Puede utilizar comodines con whatis
. Debe utilizar la -w
opción (comodín) para hacerlo.
qué es -w char *
Los resultados coincidentes se enumeran en la ventana de la terminal.
El comando apropiado
El apropos
comando es similar a whatis
, pero tiene algunas campanas y silbidos más . Busca en los títulos de las páginas de manual y en las descripciones de una línea buscando el término de búsqueda. Enumera las descripciones de las páginas de manual correspondientes en la ventana de la terminal.
La palabra apropos significa «relacionado con» o «concerniente», y el comando apropos
tomó su nombre de esto. Para buscar cualquier cosa relacionada con el groups
comando, podemos usar este comando:
grupos a propósito
apropos
enumera los resultados en la ventana de la terminal.
Usar más de un término de búsqueda
Puede utilizar más de un término de búsqueda en la línea de comandos. apropos
buscará páginas de manual que contengan cualquiera de los términos de búsqueda.
apropos chown chmod
Los resultados se enumeran como antes. En este caso, hay una única entrada para cada uno de los términos de búsqueda.
Usar coincidencias exactas
apropos
devolverá páginas de manual que contienen el término de búsqueda incluso si el término está en medio de otra palabra. Para apropos
devolver solo coincidencias exactas para el término de búsqueda, use la -e
opción (exacta).
Para ilustrar esto, usaremos apropos
con grep
como término de búsqueda.
apropos grep
Hay muchos resultados devueltos para esto, incluidos muchos donde grep
se incorpora en otra palabra, como bzfgrep
.
Intentémoslo de nuevo y usemos la -e
opción (exacta).
apropos -e grep
Esta vez tenemos un único resultado, para lo que realmente estábamos buscando.
Coincidencia de todos los términos de búsqueda
Como vimos anteriormente, si proporciona más de un término de apropos
búsqueda, buscará páginas de manual que contengan cualquiera de los términos de búsqueda. Podemos cambiar ese comportamiento usando la -a
opción (y). Esto hace que apropos
solo seleccione coincidencias que tienen todos los tiempos de búsqueda en ellos.
Probemos el comando sin la -a
opción para que podamos ver qué resultados apropos
da.
apropos crontab cron
Los resultados incluyen páginas de manual que coinciden con uno u otro de los términos de búsqueda.
Ahora usaremos la -a
opción.
apropos -a crontab cron
Esta vez, los resultados se reducen a aquellos que contienen ambos términos de búsqueda.
Aún más opciones
Todos estos comandos tienen más opciones, algunos de ellos muchas más opciones, y le recomendamos que lea las páginas de manual de los comandos que hemos discutido en este artículo.
Aquí hay un resumen rápido de cada comando:
- buscar : proporciona una capacidad de búsqueda granular y rica en funciones para buscar archivos y directorios.
- localizar : proporciona una búsqueda rápida basada en la base de datos de programas y comandos.
- que : busca en $ PATH en busca de archivos ejecutables
- whereis : busca en $ PATH en busca de archivos ejecutables, páginas de manual y archivos de código fuente.
- whatis : busca en las descripciones de una línea del hombre coincidencias con el término de búsqueda.
- apropos : busca en la página de manual con más fidelidad que lo que es, para encontrar coincidencias con el término o términos de búsqueda.
¿Busca más información sobre terminales de Linux? Aquí hay 37 comandos que debe conocer .