不区分大小写在zsh / bash上的Glob

我需要列出名字以“SomeLongString”开头的所有文件。 但“SomeLongString”的情况可能会有所不同。 怎么样?

我正在使用zsh,但也欢迎bash解决scheme。

Solutions Collecting From Web of "不区分大小写在zsh / bash上的Glob"

ZSH:

$ unsetopt CASE_GLOB 

或者,如果您不想启用不区分大小写的通配符,则可以仅针对不同的部分激活它:

 $ print -l (#i)(somelongstring)* 

这将匹配任何以“somelongstring”开始的文件(以小写/大写的任意组合)。 不区分大小写的标志适用于括号之间的所有内容,可以多次使用。 阅读手册zshexpn(1)了解更多信息。

更新几乎忘了,你必须启用extendend globbing这个工作:

 setopt extendedglob 

庆典:

 shopt -s nocaseglob 

根据你想要有这个清单的深度,在这方面find很多提供:

 find . -iname 'SomeLongString*' -maxdepth 1 

这只会给你当前目录中的文件。 这里重要的是-iname参数而不是-name

 $ function i () { > shopt -s nocaseglob; $*; shopt -u nocaseglob > } $ ls *jtweet* ls: cannot access *jtweet*: No such file or directory $ i ls *jtweet* JTweet.pm JTweet.pm~ JTweet2.pm JTweet2.pm~