假设extglob在Bash中打开(我使用5.0.11(1)-release (x86_64-apple-darwin18.6.0)),并且我们有一个名为list89988777,,,,,+--.txt的文件。如果,是[..]中的第一个,这对我来说没有任何意义,否则我无法让一个,在[...]模式下工作。因此:
ls *+([[:digit:]]|[\,\-\+]).txt工作,也是如此
ls *+([[:digit:]]|[[:punct:]]|[-\,+]).txt以及
ls *+([[:digit:]]|[[:punct:]]|[-+\,]).txt
但
ls *+([[:digit:]]|[\,-+]).txt不起作用。
问题可以用ls *+([[:digit:]]|[[:punct:]]|[-+]).txt解决,也可以用ls *+([[:digit:]]|[[:punct:]]|[,-+]).txt解决。但是,如果第一个字符是,,那么为什么要转义[...]和D13中的所有其他字符呢?
发布于 2019-10-24 23:40:05
在评论中回答问题的用户(但随后评论消失了)是功劳。
导致问题的不是,,而是[...]中的-,因为它创建了一个范围。因此,转义,是不必要的,我们只需要确保-是集合中的第一个或最后一个。
https://unix.stackexchange.com/questions/548637
复制相似问题