esen
curso linux busquedas

Curso de Linux 6/60 – Busquedas y Expresiones Regulares

La búsqueda en Linux seria una tarea compleja si no existiera el comando find y greep estos nos dan la capacidad de poder encontrar cualquier cosas este donde este, es aquí donde comenzamos a percibir el poder informático que nos otorga Linux, sin duda disfrutaran mucho de este articulo.

Uso del comando find en Linux

Para realizar búsquedas dentro de Linux podemos hacer uso del comando find ahora ¿como usaremos find? veamos su sintaxis.

Sintaxis de find:

find [Ruta] -name [Cadena de búsqueda]

Ejemplo de uso de find:

find / -name linux

  • Donde “/” es la ruta.
  • “-name” nos permite realizar búsquedas literales sensibles a las mayúsculas y minúsculas.
  • y “linux” la cadena de texto que estamos buscando.

Uso de comodines en la busqueda en Linux

En la búsqueda en Linux con el comando find también se puede hacer uso de comodines.

Ejemplo de uso de comodines en find:

find / -name linux*
find / -name *linux*

Hasta ahora las búsquedas realizadas con el parámetro -name realiza búsquedas literales o sea búsquedas capaces de distinguir entre letras minúsculas y mayúsculas, así que nos realiza una distinción entre por ejemplo un archivo de nombre Linux y otro de nombre linux.

Realizar una búsqueda con find sin discriminación entre mayúsculas y minúsculas

Para realizar una búsqueda que no nos va a discriminar la mayúscula y la minúscula o sea que no va a ser sensible a la mayúscula y la minúscula y nos va a encontrar los resultados no literales usaremos el parametro -iname

Ejemplo:

Find / -iname Linux

Al no ser una búsqueda literal nos mostrara archivos con mayúscula y minúscula que contenga la cadena linux.

Busqueda de archivos en Linux por extensión

El comando find junto a los comodines también lo podemos utilizar para buscar archivos con determinada extensión.

Sintaxis:

find / -name *.c   (realiza la búsqueda de todos los archivos con extensión .c (Archivos de lenguaje C) )
find / -name *.h   (realiza la búsqueda de todos los archivos con extensión .h (los archivos de cabecera de C) )
find / -name *.so (realiza la búsqueda de todos los archivos con extensión .so (los archivos de librerías dinámicas) )

Busqueda de archivos en Linux por permisos

El comando find también nos permite hacer búsquedas por medio de permisos.

Buscar los permisos de lectura, escritura y ejecución en los 3 roles

find / -perm 0777

  • Donde -perm es el operador para búsqueda de permisos.
  • y 0777 los permisos que buscamos.

buscar archivos con permiso de lectura y escritura para los 3 los roles

find / -perm 0666

  • Donde -perm es el operador para búsqueda de permisos.
  • y 0666 los permisos que buscamos.

Buscar archivos con permiso de solo lectura para los 3 los roles

find / -perm 0444

  • Donde -perm es el operador para búsqueda de permisos.
  • y 0444 los permisos que buscamos.

Búsqueda por sintaxis alternativa

También hay una forma qué es la forma de sintaxis alternativa en la cual nos permite buscar por medio del rol y el permiso que estamos buscando.

En este caso en particular vamos a buscar el grupo que tenga el bit s que es el bit de suit de ejecución como el usuario propietario

find / -perm /g+s

También podemos hacer otra búsqueda en este caso voy a buscar quien tenga el rol de usuario que tenga bit s de suit.

find / -perm /u+s

Búsqueda masiva archivos y directorios en Linux

Otra opción que nos da el comando Find es la búsqueda de archivos y directorios masivos.

find / -type f -empty

-empty que significa vacío, entonces esto nos va a buscar todos los archivos cuyo tamaño es cero o sea que están vacíos.

lo mismo aplica para directorio exactamente la misma sintaxis pero reemplazamos f por d

find / -type d -empty

y nos encuentra todos los directorios vacíos del sistema de archivos que estamos buscando en este caso

Búsqueda de archivos ocultos

Otra búsqueda muy útil que podemos lograr con el find es buscar con el comodín los archivos ocultos, como en Linux los archivos ocultos son precedidos por un punto podemos realizar la siguiente busqueda:

find / -name ".*"

Búsqueda de archivos por usuarios

Otra funcionalidad buena que tiene el find es buscar por usuario y por grupo.

Sintaxis:

find / -user [nombre del usuario]

Ejemplo de búsqueda de archivos por usuario:

find / -user root
find / -user fox

Búsqueda de archivos por grupos

Sintaxis:

find / -group [nombre del grupo]

Ejemplo de búsqueda de archivos por grupo:

find / -group root
find / -group colord

Combinando criterios de búsqueda

A este punto ya somos capaces de sumar lo aprendido y realizar criterios de búsqueda mucho más específicos, vamos a ver como.

Para este ejemplo vamos a buscar los archivos cuyo propietario sea fox y que en su hombre no importando si es mayúscula o minúscula tenga como extensión .c esto lo lograremos utilizando el comodín.

find / -user fox -iname "*.c"

Ahora el mismo ejemplo pero para archivos cuyo usuario sea root

find / -user root -iname "*.c"

Búsquedas de archivos por tiempo de acceso

Con el operador -atime podemos realizar búsquedas de archivos accedidos hace cierto tiempo, en el siguiente ejemplo hace 30 días.

find / -atime 30

Búsquedas de archivos por tiempo de modificación

La funcionalidad de find de buscar por tiempo de acceso y por el tiempo de modificación es una parte muy importante de este comando tenemos por ejemplo la opción -atime y -mtime que nos permite buscar por tiempo de modificación mtime y por tiempo de acceso atime.

Con el operador -mtime podemos encontrar todos los archivos modificados hace cierto tiempo, en el siguiente ejemplo vemos

find / -mtime 30

Búsquedas de find con un rango amplio

find / -mtime +30 -mtime -90

Esto nos daría los archivos que fueron accesados entre el día 30 y 90 o sea 60 días  de rango.

También tenemos el parámetro mmin y amin que nos permite buscar en vez de rango de días rango de minutos esto nos permite movernos en el rango de un día no como mtime que nos permiten movernos en el rango de varios días.

Ejemplo de uso de mmin:

find / -mmin -60

Búsquedas de archivos por tamaño

No menos importante es la búsqueda por tamaño del comando find nosotros podemos con el parámetro -size encontrar archivos de un tamaño determinado.

Ejemplo:

find / -size 10M

Con -size 10M le estamos indicado que busque archivos de tamaño de 10MB

Otro ejemplo:

find / -size +10M

con el operador + le estamos indicando que nos busque en este ejemplo los archivos que tengan más de 10 Mb

find / -size -10M

con el operador – solicitamos que nos busque en este ejemplo los archivos que tengan menos de 10 Mb

ahora ampliemos el rango de búsqueda de la siguiente forma

find / -size +10M -size -20M

Esta forma de búsqueda con un rango más amplio nos permite encontrar archivos que tengan un tamaño de 10Mb a 20Mb, muy útil por cierto cuando no sabes el tamaño exacto del archivo que estamos buscando.

Búsquedas con comandos que afecten las búsquedas

Borrar archivos de cierto tamaño

Ahora la búsqueda por tamaño o por cualquier otra búsqueda nos permite hacer algo que es ejecutar un comando que afecte esa búsqueda eso lo hacemos con el comando -exec entonces con –exec podríamos en el siguiente caso borrar todos los archivos que estaban entre los 10 y los 20 megas de espacio.

find /home/fox -size +10M -size -20M -exec rm -f {} \;

Cambio de permisos en un rango de búsqueda

Teniendo en cuenta el ejemplo de exec pasamos al siguiente ejemplo, vamos a hacer una búsqueda de permisos los cuales vamos a encontrar los permisos de lectura, escritura y ejecución para el usuario, lectura y ejecución para el grupo y lectura y ejecución para todo lo demás que es 755 y vamos a cambiarle los permisos, vamos a cambiárselos a 750 -exec le vamos a dar chmod 750 y ahí vamos a cambiar todos los archivos que encuentre con el parámetro que estamos buscando a esos permisos que le estamos indicando

find /home/fox -perm 0755 -exec chmon 750 {} \;

Búqueda de rango de fecha

para terminar vamos a ver la búsqueda por rango de fechas y para esste ejemplo buscaremos entre enero y junio del 2014 entonces nos va a arrojar la búsqueda entre el primero de enero del 2014 y el primero de junio del 2014 todos los archivos que fueron modificados en ese lapso de tiempo.

find / -type f -newermt "2014-01-01" ! newermt "2014-06-01"

Búqueda de rango por año y mes

También podemos buscar por los últimos años, meses, semanas o dias:

find / -type f -newermt "2 year ago"
find / -type f -newermt "1 year ago"
find / -type f -newermt "1 month ago"
find / -type f -newermt "1 week ago"
find / -type f -newermt "1 day ago"
find / -type f -newermt "last friday"

Buscar dentro de un archivo con Greep

Una vez controlada la búsqueda de archivos solo hace falta tener un mismo control en la buscada de contenido dentro de los archivos, así no habrá nada que se te escape, y para lograrlo utilizaremos greep

Ejemplo de uso de greep:

greep 80 /etc/*.conf

  • Donde 80 es la cadena a buscar
  • /etc/ en la ruta en donde se realizara esa búsqueda
  • y *.conf es para indicar que la busqueda se haga en todos los archivos .conf

En el segundo ejemplo del uso de greep realizaremos una búsqueda de una cadena de texto:

greep “support” /etc/*.conf

En el tercer ejemplo

greep “P*22” /etc/*/*conf*

find / -name "*[aA]*"   resultado entre a y A
find / -name "*[xX]*"   resultados entre x y X
find / -name "*[0-9]*"  resultados númericos

find / -name "*[L-M]*"  resultados entre L y M

En las siguientes búsquedas ¿Podrías decirnos que resultado arrojara?
ls [a]*
ls [l]*
ls [!l]*
ls [!a]*
ls | grep "^[1]"
ls | grep "^[L]"
ls | grep "^[A-z]"
ls *[1]*
ls | grep "[l]$"
ls | grep "[a]$"
ls | grep "[^a]$"
ls | grep "[a-m]$"
ls | grep "[a-m$]"
ls | grep "^[a-m]$"

Por último tenemos una tabla en resumen de cada uno de los comodines para la búsqueda tanto find como en greep tenemos y el uso de comodines.

find greep y uso de comodines

Bueno eso es todo por esta entrega en el curso de Linux estoy feliz de volver estoy feliz de estar con usted aquí entregándoles esta información qué sé que les gusta mucho y que es de su agrado y por eso prometo solemnemente no dejar de hacer los articulos del curso Linux hasta que termine los 60 capitulos así que no se olviden por favor de compartir esta pagina en sus redes sociales, y suscríbanse al canal no nada mas me Beneficia a mi sino a ustedes porque hay mas material y más información.

yo soy efox declasificado un enfoque diferente de la tecnología informática.

 

¡Hasta el próximo capitulo!

Sobre Fernando Alberto Velasquez Aguilera

2 comentarios

  1. Tremenda pagina es esta. Realmente muy, pero muy buena, de las mejores que he visto hasta ahora.

  2. fuera bueno si lo rwalizas en pdf para poderlo descargar, para aquellos que no poseen internet personal

Comentar

Su dirección de correo electrónico no será publicada.Los campos necesarios están marcados *

*