题
我需要列出名称以'SomeLongString'开头的所有文件。但'SomeLongString'的情况可能会有所不同。怎么样?
我正在使用zsh,但也欢迎使用bash解决方案。
解决方案
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~
不隶属于 StackOverflow