Ver destacados

Cómo usar comando Grep y Tree Linux ejemplos

Tutorial para poder saber las funciones y cómo usar comandos Grep Linux y comando Tree Linux con ejemplos.
Escrito por
28.4K Visitas  |  Publicado ago 07 2019 09:30
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


Uno de los sistemas operativos más versátiles para administrar a través de la terminal es sin duda Linux en cualquiera de sus distribuciones disponibles y esto gracias a la integración de numerosos comandos disponibles en su consola. No importa si usamos un sistema basado en terminal (como las versiones de servidor) o un ambiente basado en GUI (como las versiones de escritorio), en todas ellas la terminal y sus comandos siempre serán una fuente confiable de gestión y soporte.

 

Dentro de nuestras actividades diarias esta la creación y edición de carpetas y archivos, las cuales pueden llegar a ser numerosas según el rol desempeñado. Esto en algún momento de soporte es normal que de una u otra forma afecte de forma negativa la búsqueda de elementos no solo por la cantidad de archivos sino por la ubicación donde estos están alojados.

 

Ahorra tiempo y duplica tus archivos copiándolos en diferentes carpetas a la vez con comandos en Linux.

 

Para ayudar a gestionar de una forma mucho más simple este tipo de actividades, contamos con dos comandos esenciales tanto para la búsqueda como para la visualización de objetos en Linux y son los comandos Grep y Tree. Solvetic explicará en detalle su uso y cómo aplicarlos de forma integral en la distribución que usemos de Linux.

 

 


1. Qué es el comando GREP

 

Qué es el comando Grep
Grep es un comando desarrollado con el fin de ejecutar tareas de búsqueda de texto, Grep se encarga de buscar en el archivo que indiquemos las líneas donde se detecta una coincidencia ya sea con las palabras o la cadena que asignemos durante la ejecución de este. Su nombre se deriva del editor de UNIX g/re/p. Durante la ejecución de Grep, será posible indicar un nombre de un fichero o es posible dejar la entrada estándar, así, Grep se encarga de generar las líneas que concuerden.

 

Variables de Grep
Existen tres (3) variables gestionadas durante el proceso de Grep las cuales son:
  • -G, --basic-regexp: esta se encarga de interpretar el patrón como una expresión regular básica, es el valor por defecto.
  • -E, --extended-regexp: esta opción válida el patrón coma una expresión regular extendida.
  • -F, --fixed-strings: con esta opción el patrón se interpreta como una lista de cadenas de caracteres fijas, separadas por saltos de línea donde se buscará la concordancia en cualquiera de ellas.

 

 

El comando Grep (Global Regular Expression Print) es un comando que nos dará la posibilidad de analizar en el sistema para buscar las coincidencias y una vez detectadas proceder a imprimir los resultados para que sea posible administrar de forma centralizada estos resultados.

 

Sintaxis Grep
La sintaxis de uso del comando Grep es la siguiente:
grep (Opción) Patrón (archivo)

 

Parámetros comando Grep
Existen una serie de parámetros que podemos usar con el comando grep con el fin de obtener los mejores resultados, estos son:
  • -E, --extended-regexp: Los patrones son entendidos como expresiones regulares
  • -F, --fixed-strings: Los patrones son cadenas
  • -G, --basic-regexp: Los patrones son expresiones regulares básicas
  • -P, --perl-regexep: Los patrones son expresiones Perl
  • -e, regexp=PATTERNS: Se hace búsqueda de los patrones para las coincidencias
  • -f. –file (Archivo): Hace uso de los patrones como archivo
  • -i, --ignore-case: Ignora las mayúsculas
  • -w, --word-regexp: Coincide toda las palabras iguales
  • -x, --line-regexp: Coincide todas las líneas
  • -s, --no-messages: Elimina los mensajes de error
  • -v, --invert-match: Selecciona las líneas que no coinciden con los criterios de búsqueda
  • -V, --version: Despliega la versión de grep usada
  • -m, --max-count=NUM: Detiene la búsqueda después de un número de líneas específico
  • -b, --byte-offset= Despliega el desplazamiento de byte junto a las líneas de salida
  • -n, --line-number: Imprime el número de líneas
  • -H, --with-filename: despliega el nombre del archivo en las líneas de salida
  • -q, --quiet: Suprime todos los resultados
  • -d, --directories=Acción: Indica como se manejan los directorios
  • -l, --files-without-match= Imprime solo los nombres de los archivos sin incluir las líneas
  • -c, --count: Imprime las líneas seleccionadas por archivo

 

 

No tengo comando Grep
El comando grep está por defecto en las distribuciones de Linux peor si por algún motivo no lo tienes, puedes instalarlo con los siguientes comandos:
sudo apt-get install grep (Debian y Ubuntu)
sudo yum install grep (Redhat, CentOS y Fedora)

 

 

Paso 1

La sintaxis general, la cual puede contener múltiples parámetros, es la siguiente:
grep  [-AB]  núm]  [-CEFGVbchiLlnqsvwxyUu] [[-e ] patrón | -f fichero] [--extended-regexp] [--fixed-strings]  [--basic-regexp]  [--regexp=PATRÓN]  [--file=FICHERO]   [--ignore-case] [--word-regexp]    [--line-regexp]    [--line-regexp]   [--no-messages]   [--invert-match] [--version] [--help]  [--byte-offset]  [--line-number]  [--with-filename]  [--no-filename]  [--quiet]  [--silent]  [--files-without-match] [--files-with-matcces] [--count] [--before- context=NUM]   [--after-context=NUM]    [--context]    [--binary]    [--unix-byte-offsets] ficheros...
Paso 2

Veremos algunos ejemplos de uso de Grep antes de conocer sus parámetros. Si deseamos buscar en el directorio /etc/passwd todo lo relacionado con un usuario en especial podemos ejecutar lo siguiente:
grep “usuario” /etc/passwd
Paso 3

El resultado será el siguiente:

 

 

 

 

Paso 4

También será posible forzar al comando Grep a ignorar mayúsculas y minúsculas, es decir, permitir la coincidencia solvetic, Solvetic o SOLVETIC junto con todas combinaciones usando el parámetro -i:
grep -i "solvetic" /etc/passwd

 

Paso 5

Esta opción también puede ser ejecutada haciendo uso del comando cat así:
cat /etc/passwd | grep -i "solvetic"

2. Ejemplos de uso del comando Grep


El uso de comandos en sistemas operativos Linux es una tarea obligada para todos los administradores y usuarios de IT ya que gracias a ellos podemos realizar cientos de tareas de orden administrativo, informativo y de soporte. Existen numerosos comandos, cada uno con sus criterios y funciones, pero uno de ellos especial para la búsqueda de texto en los archivos alojados en los directorios o carpetas y es el comando Grep.

 

Ahora veremos cómo usar el comando Grep en Linux.

 

Cómo usar Grep de forma general
Para comprender como funciona Grep vamos a buscar en el directorio /etc/passwd todos los resultados asociados a nuestro usuario:
grep solvetic /etc/passwd
Como resultado veremos lo siguiente:

 

 

 

 

Como punto adicional recordemos que es posible indicar a grep que ignore las mayúsculas y minúsculas dentro de los resultados, para ello ejecutamos lo siguiente:

grep -i "solvetic" /etc/passwd

 

 

Grep es ideal para la búsqueda de términos específicos en archivos conocidos, por ejemplo, vamos a ejecutar la siguiente búsqueda:

grep Solvetic Solvetic.txt
Como resultado veremos las líneas donde se repite esa palabra:

 

 

 

 

Este mismo término podemos buscarlo en diferentes archivos de forma simultánea, para ello usaremos la siguiente línea:

grep Solvetic Solvetic.txt Solvetic1.txt

 

 

Una forma más abreviada de realizar esto es ejecutando lo siguiente:

grep solvetic *. *

 

 

 

Cómo usar grep para redireccionar los resultados a un archivo en Linux
Esto es útil para los casos en los cuales debemos realizar tareas de administración sobre los archivos más adelante, por ello es posible redireccionar la salida del comando grep a un archivo especifico, por ejemplo, realizaremos lo siguiente:
grep Solvetic Solvetic.txt> Solvetic2.txt
Como resultado de ello veremos que se ha creado el archivo de texto requerido:

 

 

 

 

Cómo usar grep para buscar en directorios
Gracias al parámetro -r estaremos en capacidad de buscar un valor en los subdirectorios disponibles, ejecutaremos lo siguiente:
grep -r Solvetic /home/solvetic
Esto buscará el término en todo el directorio home resaltando los resultados detectados:

 

 

 

 

 

Cómo usar grep para desplegar el número de línea
Para tareas de auditoría o de soporte avanzado es ideal desplegar el número de la línea donde se encuentra dicho patrón de búsqueda, para esto podemos echar mano del parámetro -n de la siguiente manera. Allí encontramos el número de la línea donde se encuentra cada valor.
grep -n Solvetic Solvetic.txt

 

 

 

Cómo usar grep para resaltar los resultados
Como sabemos que el texto puede llegar a confundir en muchas veces por ello una solución es resaltar el criterio de búsqueda lo cual enfoca nuestra vista directamente en esa línea, para ello usaremos el parámetro color así:
grep -color Solvetic Solvetic.txt

 

 

Cómo usar grep para desplegar líneas que comienzan o terminan con el patrón indicado
Es posible que deseemos visualizar únicamente los resultados de las líneas que inician o terminan con un criterio de búsqueda, para ello si deseamos buscar las líneas que inician vamos a usar la siguiente línea:
grep ^ Solvetic Solvetic.txt

 

 

Ahora, para desplegar las líneas que terminan usaremos lo siguiente:

grep Solvetic $ Solvetic.txt

 

 

Cómo usar grep para imprimir todas las líneas sin ver las que coinciden
Si deseamos ver todas las líneas excepto aquellas donde está el valor buscado debemos usar el parámetro -v así:
grep -v Solvetic Solvetic.txt

 

 

 

Cómo usar grep con otros comandos
Grep, al igual que muchos comandos de Linux, puede usarse de forma simultánea con otros comandos para resultados más claros, por ejemplo, si deseamos desplegar los procesos de HTTP usaremos grep junto a ps de la siguiente manera:
ps -ef | grep http

 

 

 

 

Cómo usar grep para contar cuánto se repite una palabra en un archivo
Si deseamos saber cuántas veces se repite un patrón en un determinado archivo, usaremos el parámetro -c:
grep -c Solvetic Solvetic.txt

 

 

 

 

Cómo usar grep para hacer una búsqueda inversa
Aunque suena extraño, esto no es más que desplegar en el resultado las palabras que no estamos especificando, esto lo logramos con el parámetro -v:
grep -v Solvetic Solvetic2.txt

 

 

 

 

Cómo usar grep para ver detalles de hardware
Hemos visto anteriormente que podemos combinar grep con otros comandos para desplegar un resultado, bien, si deseamos obtener detalles específicos de hardware podemos usar cat con grep así:
 cat /proc/cpuinfo | grep -i 'Model'

 

 

 

Hemos aprendido de forma global el uso que el comando grep nos da para acceder a resultados mucho más específicos de criterios de búsqueda en Linux.

 

 


3. Cómo usar comando Grep Linux de forma recursiva

 

Paso 1

Grep nos da la posibilidad de ejecutar una búsqueda recursiva, es decir, que dicha búsqueda lea todos los archivos en cada directorio para una cadena específica, por ejemplo, la dirección IP del equipo, podemos ejecutar alguna de las siguientes opciones:
grep -r "192.168.0.25" /etc/  o grep -R "192.168.0.25" /etc/

 

Nota
Allí podemos ingresar la dirección IP actual del equipo en uso.

 

Paso 2

También podemos ejecutar lo mismo con la IP 192.168.1.5 la cual usa el sistema para salidas estándar:

 

 

Paso 3

Podemos notar que con ambas direcciones IP se despliega una línea separada precedida por el nombre del archivo en la cual fue detectada, si deseamos eliminar la inclusión de este valor, será posible suprimirlo haciendo uso de la opción -h así:
grep -h -R "192.168.1.5" /etc/ ó grep -hR "192.168.1.5" /etc/

 

Nota
Este comando debe ejecutarse como root o bien anteponiendo sudo al comando.

 

 


4. Cómo usar comando Grep Linux para ejecutar búsquedas de palabras

 

Paso 1

Grep es útil para buscar términos en un determinado archivo, así, el resultado desplegara de forma resaltada cada línea donde se encuentra el termino buscado, así como las palabras (no resaltadas) que acompañan el término de búsqueda, la sintaxis a usar es la siguiente. En este caso se han detectado 3 coincidencias en el archivo Solvetic1.
grep -w "palabra" archivo

 

 

Paso 2

En el caso de desear buscar dos términos en un archivo debemos ejecutar la siguiente sintaxis usando el comando egrep. Como vemos las palabras buscadas serán resaltadas en el resultado.
egrep -w 'termino1|termino2' archivo

 

 


5. Cómo usar comando Grep Linux para contar palabras

 

 

Paso 1

Otras de las opciones prácticas de Grep es la posibilidad de conocer cuantas veces se repite una palabra en un archivo especifico, esto se logra gracias al parámetro -c así:
grep -c 'palabra' archivo

 

 

Paso 2

Alternativamente podemos hacer uso del parámetro -n para preceder a cada línea de salida el número de la línea en la cual está ingresada en el archivo seleccionado:
grep -n 'palabra' archivo

 

 


6. Cómo forzar la búsqueda invertida comando Grep Linux


Con búsqueda inversa nos referimos a que el comando Grep solo desplegara resultados de aquellas líneas que no contienen la palabra definida, esto se logra con el parámetro -v así:
grep -v “termino” archivo

 

 


7. Cómo usar UNIX / Linux Pipes junto al comando Grep

 

Paso 1

El comando Grep en Linux puede combinarse con tubos (pipes) shell de UNIX, por ejemplo, si deseamos listar el nombre de los dispositivos de disco duro ejecutaremos la siguiente línea:
dmesg | egrep '(s|h)d[a-z]'

 

 

Paso 2

Allí serán desplegados los resultados con toda la información respectiva. Para desplegar el modelo de CPU ejecutamos:
cat /proc/cpuinfo | grep -i 'Model'

 

Paso 3

Para este mismo resultado también podemos ejecutar lo siguiente:
grep -i 'Model' /proc/cpuinfo
Paso 4

Uno de los usos más especiales del comando Grep o egrep es la posibilidad de filtrar la salida de comandos tradicionales como yum, dpkg , apt o apt-get. Por ejemplo, podemos ejecutar la siguiente línea para buscar imágenes de Linux con dpkg:
dpkg --list | grep linux-image

 

 

Paso 5

Sera posible ejecutar la búsqueda con apt:
apt search maria | egrep 'server|client'

 

 


8. Cómo listar solo los nombres de los archivos que coincidan con Grep


Para este objetivo podemos hacer uso de la opción -l con el fin de enumerar el nombre del archivo en el cual su contenido será resaltado así:
grep -l 'termino' *.c
Parámetros del comando Grep
A continuación, veremos las diversas variables que nos ofrece Grep para su gestión en Linux:

 

  • -núm: Con esta opción, las líneas concordantes estarán junto a los números de líneas anteriores y posteriores.
  • -A núm , --after-context=NÚM: Despliega el número de líneas de contexto después de que estas concuerden con las indicadas.
  • -B núm , --before-context=NÚM: Al usar esta opción, se mostrarán las líneas de contexto antes de las que concuerden con la búsqueda.
  • -V, --version: Despliega el número de versión de grep usado.
  • -b, --byte-offset: Este parámetro despliega el desplazamiento en bytes desde el principio del fichero de entrada antes de cada línea de salida del mismo.
  • -c, --count: Cuenta el número de líneas que concuerdan con el termino indicado.
  • -h, --no-filename: Suprime la impresión de los nombres de ficheros en el resultado.
  • i, --ignore-case: No toma en cuenta si las letras son mayúsculas o minúsculas.
  • -L, --files-without-match: Esta opción muestra el nombre de cada fichero de entrada donde no se encuentre ninguna concordancia.
  • -l, --files-with-matches: Muestra el nombre de cada fichero de entrada que puede generar algún resultado.
  • -n, --line-number: Asigna cada línea de salida con el número de línea respectivo en el archivo de búsqueda.
  • -q, --quiet: Activa el modo silencioso el cual suprime la salida normal y la búsqueda finaliza en la primera concordancia.
  • -s, --silent: Suprime los mensajes de error.
  • -v, --invert-match: Esta opción invierte el sentido de la búsqueda, es decir, desplegara los resultados que no concuerdan con el termino buscado.
  • w, --word-regexp: Este parámetro selecciona únicamente las líneas que contienen concordancias que forman palabras completas.
  • -x, --line-regexp: Esta opción selecciona solamente las concordancias que constan de toda la línea.

 

 


9. Cómo usar e instalar comando Tree en Linux


Ahora hablaremos un poco sobre el comando Tree, como su nombre lo indica, este ha sido desarrollado para mostrar los directorios del sistema en forma de árbol facilitando así su gestión.

 

El comando Tree actúa con un comando recursivo de listados de directorios el cual da como resultado el formato de árbol diseñado con una serie de colores solo si la variable de entorno LS_COLORS está establecida y la salida es a tty, en caso de no asignar argumentos, este comando listará los archivos en el directorio actual.

 

Paso 1

Su sintaxis general es la siguiente:
tree  [-acdfghilnpqrstuvxACDFQNSUX] [-L level [-R]] [-H baseHREF] [-T title] [-o filename]	   [--nolinks] [-P pattern] [-I pattern]  [--inodes]  [--device]  [--noreport]  [--dirsfirst]  [--version]   [--help]   [--filelimit   #]  [--si]  [--prune]  [--du]  [--timefmt  format] [--matchdirs] [--] [directory ...]
Paso 2

El primer paso es instalar el comando Tree ejecutando el siguiente comando:
sudo apt install tree

 

Paso 3

Una vez instalado ejecutamos directamente el comando “tree” para listar el directorio actual en formato de árbol:

 

 

 


10. Cómo trabajar con archivos usando el comando Tree en Linux

 

Ver archivos ocultos con Tree
Por defecto, el comando Tree no desplegará los archivos ocultos por motivos de seguridad, si deseamos visualizarlos en el resultado, será posible añadir el parámetro -a para tal fin:
tree -a

 

 

Desplegar solo directorios con Tree
En caso de desear que Tree solo genere las entradas de directorio será posible realizarlo usando el parámetro -d así:
tree -d

 

 

Ver la ruta completa de los archivos con Tree
El comando Tree nos da la posibilidad de imprimir el prefijo de la ruta completa para los archivos en el directorio usando el parámetro -f:
tree -f

 

 

Controlar la dimensión del resultado con Tree
En algunos casos es posible que el resultado generado sea extremadamente extenso, tree nos permite controlar la profundidad del árbol de directorios para su salida, para ello debemos usar el parámetro -L el cual requiere un valor numérico que indicara la profundidad de directorio permitida:
tree -d -L 2

 

 

Usar nombre selectivos con Tree
Con el parámetro -l será posible excluir de los resultados generados por Tree determinadas palabras, por ejemplo, podemos ejecutar la siguiente línea para que genere resultados, pero sin el término Android:
tree -d -I *Android

 

 


11. Parámetros a usar con el comando Tree en Linux

 

Parámetros para usar con Tree
A continuación, Solvetic explicará los parámetros disponibles a usar con Tree:

 

  • -a: Imprime todos los archivos, recordemos que por defecto tree no imprime archivos ocultos.
  • -d: Lista los directorios únicamente.
  • -l: Continua los enlaces simbólicos si estos apuntan a directorios, simulando ser directorios.
  • -f: Imprime el prefijo de la ruta completa de los objetos.
  • -x: Permanece solo en el sistema de archivos actual.
  • -L Level: permite definir la profundidad máxima de visualización del árbol de directorios en el resultado.
  • -R: Actúa de forma recursiva cruzando el árbol en los directorios de cada nivel y en cada uno de ellos ejecutará. de nuevo el árbol agregando `-o 00Tree.html '.
  • -P pattern (patrón): Lista solo los archivos que coinciden con el patrón de comodín.
  • -I pattern: No enumera los archivos que coinciden con el patrón de comodín.
  • --matchdirs. Esta opción especifica un patrón de coincidencia lo cual permite que el patrón aplique solo a los nombres de directorio.
  • --prune: Este parámetro elimina los directorios vacíos de la salida.
  • --noreport: Omite la impresión del informe de archivo y directorio al final de la lista del árbol ejecutado.

 

Opciones generales de Tree
Estas son las opciones generales disponibles de Tree, pero también disponemos de parámetros exclusivos para los archivos, estos son:

 

  • -q: Imprime caracteres no imprimibles en nombres de archivo.
  • -N: Imprime caracteres no imprimibles.
  • -Q: Su función es asignar los nombres de los archivos entre comillas dobles.
  • -p: Imprime el tipo de archivo y los permisos para cada archivo del directorio.
  • -u: Imprime el nombre de usuario, o UID del archivo.
  • -s: Imprime el tamaño de cada archivo en bytes al igual que su nombre.
  • -g Imprime el nombre del grupo, o GID del archivo.
  • -h: Su función es imprimir el tamaño de cada archivo de forma legible para el usuario.
  • --du: Actúa en cada directorio generando un informe sobre su tamaño incluyendo los tamaños de todos sus archivos y subdirectorios.
  • --si: Hace uso de potencias de 1000 (unidades SI) para el despliegue del tamaño de los archivos.
  • -D: Imprime la fecha de la última modificación de los archivos.
  • -F: Su tarea es añadir un `/ 'para directorios, un` =' para archivos de socket, un `* 'para archivos ejecutables, un `> 'para puertas (Solaris) y un` |' para FIFO's.
  • --inodes: Imprime el número de inodo del archivo o directorio.
  • --device: Imprime el número de dispositivo al que pertenece el archivo o directorio en el resultado.
  • -v: Ordena la salida por versión.
  • -U: No ordena los resultados.
  • -r: Ordena la salida en orden inverso.
  • -t: Ordena los resultados en base a la última hora de modificación en lugar de hacerlo de forma alfabética.
  • -S: Activa los gráficos de línea CP437
  • -n: Desactiva la colorización del resultado.
  • -C: Activa la colorización.
  • -X: Activa la salida XML.
  • -J: Activa la salida JSON.
  • -H baseHREF: Activa la salida HTML, incluyendo las referencias HTTP.
  • --help: Accede a la ayuda de Tree.
  • --version: Muestra la versión usada del comando Tree.

 

Con el uso de estos dos comandos era posible administra de una forma mucho más integral cada tarea a realizar sobre los archivos en Linux complementando las tareas de búsqueda o gestión sobre estos y accediendo a resultados integrales según sea necesario.

 

En este tutorial te explicamos los diferentes comandos que debes usar en Linux para buscar y encontrar diferentes archivos.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!