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

时间:2020-03-06 14:58:10  来源:igfitidea点击:

我需要列出所有名称以" SomeLongString"开头的文件。但是'SomeLongString'的情况可能有所不同。如何?

我正在使用zsh,但是也欢迎使用bash解决方案。

解决方案

根据我们希望获得此列表的深度,find提供了很多
在这方面:

find . -iname 'SomeLongString*' -maxdepth 1

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

重击:

shopt -s nocaseglob

ZSH:

$ unsetopt CASE_GLOB

或者,如果我们一般不希望启用不区分大小写的glob,则可以仅针对不同部分激活它:

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

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

更新
几乎忘了,我们必须启用extendend globing才能起作用:

setopt extendedglob