製品番号を含む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].*"
スラッシュの後に数字があり、その後に数字以外の数字があります。