如何正确否定zsh全局表达式?


18

我想列出除以owp结尾的所有文件:因此,我尝试了:

  ls -l *.(^owp)
  zsh: unknown sort specifier
  ls -l *(^owp) 
  zsh: unknown sort specifier
  ls -l *[^o][^w][^p] # does not work either, missing some files

没有工作。我如何正确地做到这一点?我的.zshrc已“设置Extendedglob”。

Answers:


27

尝试以下任一方法:

ls -l ^*.owp

(即匹配模式以外的任何东西*.owp

要么:

ls -l *~*.owp

(即,匹配任何与模式匹配*但不匹配的内容*.owp

有关更多信息,请参见man zshexpn=> FILENAME GENERATION=> Glob Operators


()全局模式附加在全局限定符上,而您需要全局操作符。

什么*.(^owp)是:

  1. 匹配所有以点号结尾的文件名
  2. 如果不是管道(^p),并且
  3. (o)通过“ w” =>“未知排序说明符” 对匹配项进行排序

有关更多信息,请参见man zshexpn=> FILENAME GENERATION=> Glob Qualifiers


1
^ *。owp完成了工作。whooa,*。(^ owp)的作用是什么:)
数学

9
对于无法使用此功能的任何人,您需要extendedglob在Zsh中设置该选项。
2014年

7
@DBedrenko:谢谢!注意:通过setopt extendedglob
Thomas M

1
对于那些对全球限定符感兴趣的人,我发现可以作为快速摘要。
wardw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.