2008-10-01 21 views

Respuesta

25

ZSH:

$ unsetopt CASE_GLOB 

O, si usted no desea habilitar el englobamiento de mayúsculas y minúsculas, en general, se puede activar sólo la parte variable:

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

Esto coincidirá con cualquier archivo que comience con "somelongstring" (en cualquier combinación de mayúsculas/minúsculas). El indicador de mayúsculas y minúsculas se aplica a todo lo que se encuentra entre paréntesis y se puede usar varias veces. Lea el manual zshexpn(1) para obtener más información.

ACTUALIZACIÓN Casi lo olvido, tiene que habilitar Extendend comodines para que esto funcione:

setopt extendedglob 
+4

Por cierto, tuve que conectar EXTENDED_GLOB para que funcione. –

+0

¿Qué pasa con 'setopt no_CASE_GLOB'? – ksoo

10

Dependiendo de la profundidad que desea tener este listado, find ofrece mucho en este sentido:

find . -iname 'SomeLongString*' -maxdepth 1 

Esto sólo le dará los archivos en el directorio actual. Importante aquí es el parámetro -iname en lugar de -name.

25

bash:

shopt -s nocaseglob 
+0

Gracias. Esperaba que hubiera una forma de especificarlo como parte del mismo globo. El manual de zsh menciona algo parecido, pero no pude descifrarlo. –

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~ 
+0

** Necesita citar el glob para pasarlo a la función de forma segura **. Si '* jtweet *' coincide con algo, se expandirá antes de que la función lo vea. (O error o cadena vacía dependiendo de otras configuraciones 'shopt'). Interesante idea, sin embargo. Creo que funcionará principalmente si ejecuta 'i ls '* jtweet *'', incluso si también hay un 'jtweet.pm en el directorio. Sin embargo, hay muchos problemas potenciales con espacios u otros caracteres especiales en args no glob, o en el glob. –

Cuestiones relacionadas