expresión regular en buscar para localizar sólo

expresión regular en buscar para localizar sólo

Tengo un archivo csv (products.csv) con números de producto

$ cat products.csv | head -3
2.20
2.21
2.22

en otro directorio tengo miles de imágenes de productos en subdirectorios.

Necesito ubicar imágenes de productos según el número de producto del archivo productos.csv.

He escrito un script bash simple para localizarlos:

#!/bin/sh

PRODUCTS_FOLDER="products";
PRODUCTS="products.csv";

for x in `cat $PRODUCTS`;
do
    FILE=`find $PRODUCTS_FOLDER -follow -iname "$x*"`;
    if [ -n "$FILE" ]; then
            echo "Product $x found:";
            echo "--> $FILE <--";
    else
            echo "Product $x not found";
    fi
    echo "-----------------------------------";
done

pero no hace exactamente lo que necesito. En los resultados puedo encontrar lo siguiente:

-----------------------------------
Product 14.144 found:
--> products/Buchzeichen/14.144_Interlaken_sortiert.jpg
products/Motive/14.1448.jpg
products/Motive/14.1445.jpg
products/Motive/14.1449.jpg
products/Motive/14.1446.jpg <--
-----------------------------------

El resultado correcto debe contener solo imágenes con ese número (14.444) sin 14.1448, 14.1445, 14.1449, 14.1446

¿Qué experiencia regular debo usar para buscar para obtener el resultado esperado? ¿O tal vez hay otra forma de solucionarlo?

Tus ideas o sugerencias son muy apreciadas.

Respuesta1

La siguiente expresión regular debería funcionar:

-regex ".*/$x[^0-9].*"

Contiene el número justo después de la barra seguida de un elemento que no es un número.

información relacionada