찾기의 정규식은 찾기만 합니다.

찾기의 정규식은 찾기만 합니다.

제품 번호가 포함된 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.1448, 14.1445, 14.1449, 14.1446 없이 해당 번호(14.444)가 있는 사진만 포함되어야 합니다.

예상 결과를 얻으려면 find에서 어떤 정규 표현식을 사용해야 합니까? 아니면 다른 해결 방법이 있을까요?

귀하의 아이디어나 제안을 높이 평가합니다

답변1

다음 정규 표현식이 작동해야 합니다.

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

슬래시 바로 뒤에 숫자가 있고 그 뒤에 숫자가 아닌 숫자가 있습니다.

관련 정보