Domanda

Devo elencare tutti i file i cui nomi iniziano con 'SomeLongString'. Ma il caso di 'SomeLongString' può variare. Come?

Sto usando zsh, ma anche una soluzione bash è benvenuta.

È stato utile?

Soluzione

ZSH:

$ unsetopt CASE_GLOB

Oppure, se non si desidera abilitare il globbing senza distinzione tra maiuscole e minuscole in generale, è possibile attivarlo solo per la parte variabile:

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

Questo corrisponderà a qualsiasi file che inizia con " somelongstring " (in qualsiasi combinazione di lettere minuscole / maiuscole). Il flag senza distinzione tra maiuscole e minuscole si applica a tutto tra parentesi e può essere utilizzato più volte. Leggi il manuale zshexpn (1) per maggiori informazioni.

Aggiorna Quasi dimenticato, devi abilitare extend globbing affinché funzioni:

setopt extendedglob

Altri suggerimenti

bash:

shopt -s nocaseglob

A seconda della profondità con cui si desidera avere questo annuncio, trova offre parecchio a questo proposito:

find . -iname 'SomeLongString*' -maxdepth 1

Questo ti darà solo i file nella directory corrente. Importante qui è il parametro -iname anziché -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~
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top