sample1=`expr "$filename" : '^sample-'`
sample2=`expr "$filename" : '.*sample\.[a-zA-Z][a-zA-Z][a-zA-Z]$'`
if [ $sample1 -eq "0" ] && [ $sample2 -eq "0" ] && [[ `lsof -c unrar | grep $f` == "" ]] && [[ `lsof -c unzip | grep $f` == "" ]]
then
...
好的,通过这段代码,我尝试检测以sample-开头的文件
或以 sample.$random
不知道为什么,但sample2不工作 我尝试检测以 example.*** 结尾的文件,但它不起作用
最佳答案
使用评论中找到的信息,您会对这个示例不匹配的原因感兴趣:
$ expr 'benidorm.s07e06.hdtv.x264-tla-sample.mp4' : '.*sample\.[a-zA-Z][a-zA-Z][a-zA-Z]$'
0
原因是mp4
与[a-zA-Z][a-zA-Z][a-zA-Z]
不匹配。请尝试以下操作:
$ expr 'benidorm.s07e06.hdtv.x264-tla-sample.mp4' : '.*sample\.[[:alnum:]][[:alnum:]][[:alnum:]]$'
40
这就成功了。
另外,请注意,在现代的 unicode 字体世界中,不应使用诸如 [a-zA-Z]
之类的正则表达式。如果您想匹配字母,请改用 [[:alpha:]]
等字符类。
关于php - 检测 bash 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376387/