我正在尝试编写一种glob模式,该模式将返回未以两个可能的后缀之一结尾的文件列表:完成和每月
我的测试目录中的文件列表是:
mParentActivity.runOnUiThread(new Runnable() {
public void run() {
mParentActivity.onBackPressed();
}
});
如果仅执行1个后缀,则表示我非常成功:
foo.done
foo.montly
foo.pdf
foo.txt
但是,当我尝试这样的事情时:
ls !(*done) or ls !(*monthly)
我明白了:
ls !({*monthly,*done})
有人可以帮助我理解一个结果,该结果不仅不能产生否定的结果,而且可以列出重复项!
答案 0 :(得分:1)
使用|
分隔模式列表(docs)中的模式:
如果使用内置的shopt启用了extglob shell选项, 几个扩展的模式匹配运算符被识别。在里面 在下面的描述中,模式列表是一个或多个列表 模式之间用“ |”分隔。
结果:
$ shopt -s extglob
$ ls
foo.done foo.monthly foo.pdf foo.txt
$ ls *.!(monthly|done)
foo.pdf foo.txt