2008-10-01 7 views

ответ

25

ЗШ:

$ unsetopt CASE_GLOB 

Или, если вы не хотите, чтобы включить регистронезависимую подстановку в целом, вы можете активировать его только меняющуюся часть:

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

Это будет соответствовать любому файлу, начинающемуся с «somelongstring» (в любой комбинации нижнего/верхнего регистра). Флаг, не учитывающий регистр, применяется ко всему между круглыми скобками и может использоваться несколько раз. Прочтите руководство пользователя zshexpn(1) для получения дополнительной информации.

UPDATE Почти забыл, вы должны включить extendend подстановку для этого работы:

setopt extendedglob 
+4

BTW, мне пришлось установить EXTENDED_GLOB, чтобы он работал. – 2008-10-02 06:56:55

+0

Как насчет `setopt no_CASE_GLOB`? – ksoo 2014-01-18 18:24:00

10

В зависимости от того, насколько глубоко вы хотите, чтобы этот список, find предлагает довольно много в этой связи:

find . -iname 'SomeLongString*' -maxdepth 1 

Это даст вам только файлы в текущем каталоге. Важным здесь является параметр -iname вместо -name.

25

Баш:

shopt -s nocaseglob 
+0

Спасибо. Я надеялся, что есть способ указать его как часть самого глоба. В руководстве zsh упоминается что-то подобное, но я не мог понять это. – 2008-10-01 10:15:39

1

$ 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~ 

 Смежные вопросы

  • Нет связанных вопросов^_^