Pregunta

Necesito enumerar todos los archivos cuyos nombres comiencen con 'SomeLongString'. Pero el caso de 'SomeLongString' puede variar. ¿Cómo?

Estoy usando zsh, pero una solución de bash también es bienvenida.

¿Fue útil?

Solución

ZSH:

$ unsetopt CASE_GLOB

O, si no desea habilitar el uso de globos de manera que no distingan mayúsculas y minúsculas en general, puede activarlo solo para 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 que distingue entre mayúsculas y minúsculas se aplica a todo entre paréntesis y se puede utilizar varias veces. Lea el manual zshexpn (1) para obtener más información.

ACTUALIZACIÓN Casi lo olvido, tiene que habilitar la extensión de espacios para que esto funcione:

setopt extendedglob

Otros consejos

bash:

shopt -s nocaseglob

Dependiendo de la profundidad con la que desee tener esta lista, find ofrece bastante en este sentido:

find . -iname 'SomeLongString*' -maxdepth 1

Esto solo le dará los archivos en el directorio actual. Importante aquí es el parámetro -iname en lugar de -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~
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top