regexp em find para localizar apenas

regexp em find para localizar apenas

Tenho um arquivo csv (produtos.csv) com números de produtos

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

em outro diretório, tenho milhares de imagens de produtos em subdiretórios.

Preciso localizar imagens de produtos com base no número do produto no arquivo products.csv.

Eu escrevi um script bash simples para localizá-los:

#!/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

mas não está fazendo exatamente o que eu preciso. Nos resultados posso encontrar o seguinte:

-----------------------------------
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 <--
-----------------------------------

O resultado correto deve conter apenas imagens com esse número (14.444) sem 14.1448, 14.1445, 14.1449, 14.1446

Que experiência regular devo usar para obter o resultado esperado? Ou talvez haja outra maneira de resolver isso?

Suas idéias ou sugestões são muito apreciadas

Responder1

A seguinte expressão regular deve funcionar:

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

Ele contém o número logo após a barra seguida por um não-número.

informação relacionada