BASH脚本通配符不起作用

时间:2011-07-31 10:48:20

标签: bash wildcard

我正在尝试使用“*”通配符在bash脚本中使用mkdir命令。 完整代码是: mkdir -p $EXTRACTDIR/$CV_NAME*/release

它应该在现有“OpenCV-2.2.0”文件夹中创建一个文件夹“release”。 两台计算机完全一样,第三台计算机创建了一个文件夹OpenCV * / release,我无法弄清楚原因。

Thnx的帮助

2 个答案:

答案 0 :(得分:3)

find 命令确实是一个非常有用的命令,尤其是在使用-exec选项时。我全心全意地建议进一步阅读。

find ./$EXTRACTDIR -type d -name $CV_NAME\* -exec mkdir {}/release \;

{}将搜索结果转换为mkdir命令。不需要mkdir(-p)的parent选项,因为该文件夹必须存在才能找到。

答案 1 :(得分:2)

在第三台计算机上,“OpenCV-2.2.0 / release”不存在,因此通配符匹配将失败,并将导致*未触及的字符串。

cd $EXTRACTDIR/$CV_NAME*; mkdir release

mkdir `echo $EXTRACTDIR/$CV_NAME*`/release 

如果您有多个$ CV_NAME *目录,则必须使用循环。