如何测试是否存在以“xx”开头的目录?

时间:2016-08-05 07:55:22

标签: bash

如何测试以“xx”开头的目录。例如xx-a/ xx-b/ xx-c/。如何测试它们存在。

packagePath="xx*"

if [[ -d $packagePath ]]; then
    rm -rf $packagePath
fi

我试试这个但不行。

3 个答案:

答案 0 :(得分:2)

问题是可以有多个这样的目录,但是-d只需要一个。此外,扩展的顺序很重要。

dirs=( $packagePath )
if [[ -d ${packagePath[0]} ]] ; then
    rm -rf "${packagePath[@]}"
fi

此外,一旦通配符扩展,你知道目录在那里,所以不需要再次测试它们的存在:

dirs=( $packagePath/ )
if [[ ${packagePath[0]} != *\*/ ]] ; then
    rm -rf "${packagePath[@]}"
fi

但如果您只想删除它们,则无需进行测试。简单地

rm -rf $packagePath

应该有用。

答案 1 :(得分:2)

没有必要进行明确的测试。在模式的末尾添加SUFFIXES = {1: 'st', 2: 'nd', 3: 'rd'} def ordinal(num): if 10 <= num % 100 <= 20: suffix = 'th' else: suffix = SUFFIXES.get(num % 10, 'th') return str(num) + suffix 匹配目录。

/

答案 2 :(得分:1)

执行类似

的操作
#To check at least one directory starting with xx exist
var=( xx* ) # * will glob for everything that start with xx
for i in "${var[@]}"
do 
  [ -d "$i" ] && echo "exists" && break
done