regexp in find para localizar apenas

1

Eu tenho o arquivo csv (products.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.

Eu preciso localizar as imagens do produto com base no número do produto do arquivo products.csv.

Eu escrevi um script 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 fotos com esse número (14.444) sem 14.1448, 14.1445, 14.1449, 14.1446

Que exp regulares 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

    
por Robert Jonczy 14.11.2014 / 17:59

1 resposta

1

A seguinte expressão regular deve funcionar:

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

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

    
por 14.11.2014 / 18:05