Ejecute el comando find -exec en Bash

Aashish Sunuwar 24 marzo 2022
Ejecute el comando find -exec en Bash

Este artículo explicará cómo usar el parámetro -exec del comando find para localizar cualquier texto en un archivo usando el comando find.

Utilice el comando find para buscar archivos en Bash

Un comando find es una herramienta útil para buscar y seleccionar archivos en bash. Usamos el comando find con algunas expresiones y acciones.

Ejemplo:

find ./folder -name *.txt

Usamos el comando find con una ubicación de búsqueda, como ./carpeta para el directorio carpeta y sus subdirectorios. Y la expresión -name *.txt es para encontrar todos los archivos .txt en la ubicación.

Use la opción -exec con el comando find para buscar archivos en Bash

Podemos usar la acción -exec para ejecutar comandos en los archivos encontrados por el comando find usando el comando find.

Ejemplo:

find ./folder -name *.txt -exec file {} +

Producción :

./folder/hello.txt: ASCII text, with no line terminators

La acción -exec ejecuta el comando file, mostrando el tipo de archivo devuelto por el comando find.

Utilice el comando find -exec para buscar un texto específico en Bash

Podemos usar el comando find con la opción -exec para encontrar los archivos que contienen el texto que queremos buscar.

El concepto principal es usar el comando find para obtener cada archivo en el directorio de trabajo y ejecutar el comando grep para encontrar el texto en cada archivo.

Ejemplo:

# !/bin/bash
find . -exec grep linux {} \;

El siguiente comando devolverá las líneas donde se encuentra el text especificado.

Producción :

find . -exec grep linux {} \;
find . -exec grep linux {} +
title = "Unzip .gz file in linux"
description = "How to unzip a .gz file in linux"

Para evitar que el shell interprete el ; delimitador, usamos \ antes de él. Usando esta estrategia, solo obtenemos las líneas donde se detectó texto.

Podemos obtener las líneas y el nombre del archivo donde se encontró reemplazando el delimitador ; con un +.

# !/bin/bash
find . -exec grep linux {} +

Producción :

./bash.sh:find . -exec grep linux {} \;
./bash.sh:find . -exec grep linux {} +
./unzip_gz_linux.txt:title = "Unzip .gz file in linux"
./unzip_gz_linux.txt:description = "How to unzip a .gz file in linux"

La forma en que find maneja los resultados de la expresión está determinada por el delimitador. El comando -exec se repetirá para cada resultado de forma independiente si usamos el punto y coma ;.

Si usamos el signo +, todos los resultados de las expresiones se concatenarán y se proporcionarán al comando -exec, ejecutándose solo una vez. Preferimos utilizar el delimitador + por motivos de rendimiento.

Artículo relacionado - Bash Find