我正在尝试使用“*”通配符在bash脚本中使用mkdir
命令。
完整代码是:
mkdir -p $EXTRACTDIR/$CV_NAME*/release
它应该在现有“OpenCV-2.2.0”文件夹中创建一个文件夹“release”。 两台计算机完全一样,第三台计算机创建了一个文件夹OpenCV * / release,我无法弄清楚原因。
Thnx的帮助
答案 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 *目录,则必须使用循环。