我有包含产品编号的 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 中使用什么常规指数来获得预期结果?或者也许还有其他方法可以解决它?
非常感谢您的想法或建议
答案1
以下正则表达式应该有效:
-regex ".*/$x[^0-9].*"
它包含斜杠后面的数字,后跟一个非数字。