通配符:如何排除字符串? (不包含)

通配符:如何排除字符串? (不包含)

我正在练习使用通配符今天..这很有趣。
最复杂的事情完全符合我的预期是:
ls [![:digit:]]*[a-z][0-9][0-9][0-9][aA-zZ]*[![:digit:]]

但我实际上并没有设法排除字符串。
我怎样才能只列出文件不包含“测试”?
这是我已经尝试过的一些例子:

ls *!("test")*
ls !("test")
ls !=*"test"*
ls !(*"test"*)
ls *^test*
ls *(^test)*
ls (^test)*
ls !test*
ls !*test*
ls *!test*
ls !{test}
ls !*{test}*
ls *!{test}*

答案1

在重击中:

$ shopt -s extglob
$ touch a b c test
$ ls !(*test*)
a  b  c

答案2

或者,您可以使用find以下命令:

find -type f ! -name '*test*'

相关内容