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

Agn*_*ian 37 linux bash zsh glob

我需要列出名称以'SomeLongString'开头的所有文件.但'SomeLongString'的情况可能会有所不同.怎么样?

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

jkr*_*mer 30

ZSH:

$ unsetopt CASE_GLOB
Run Code Online (Sandbox Code Playgroud)

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

$ print -l (#i)(somelongstring)*
Run Code Online (Sandbox Code Playgroud)

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

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

setopt extendedglob
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,我必须设置EXTENDED_GLOB才能工作. (4认同)

Hor*_*ann 13

根据您希望拥有此列表的深度,find在这方面提供了很多:

find . -iname 'SomeLongString*' -maxdepth 1
Run Code Online (Sandbox Code Playgroud)

这只会为您提供当前目录中的文件.这里重要的是-iname参数而不是-name.