regexp в find только для поиска

regexp в find только для поиска

У меня есть CSV-файл (products.csv) с номерами продуктов.

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

в другом каталоге у меня в подкаталогах находятся тысячи изображений продуктов.

Мне нужно найти изображения продуктов по номеру продукта из файла products.csv.

Я написал простой bash-скрипт для их поиска:

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

но это не совсем то, что мне нужно. В результатах я могу найти следующее:

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

Правильный результат должен содержать только картинки с этим номером (14.444) без 14.1448, 14.1445, 14.1449, 14.1446

Какой регулярный exp мне использовать в find, чтобы получить ожидаемый результат? Или, может быть, есть другой способ решить эту проблему?

Ваши идеи и предложения высоко ценятся.

решение1

Должно подойти следующее регулярное выражение:

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

Он содержит число сразу после косой черты, за которым следует нечисло.

Связанный контент