如何测试以“xx”开头的目录。例如xx-a/ xx-b/ xx-c/
。如何测试它们存在。
packagePath="xx*"
if [[ -d $packagePath ]]; then
rm -rf $packagePath
fi
我试试这个但不行。
答案 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