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

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

제품 번호가 포함된 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].*"

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

관련 정보