
我有包含產品編號的 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
我應該在 find 中使用什麼常規 exp 才能獲得預期結果?或者也許,還有另一種方法可以解決它?
非常感謝您的想法或建議
答案1
以下正規表示式應該有效:
-regex ".*/$x[^0-9].*"
它包含斜槓後面的數字,後面跟著一個非數字。