我需要列出名称以'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~
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top