ls -d *e*
stampa tutti i file contenenti una "e" da qualche parte al suo interno. Ma il contrario, ls -d *[!e]*
non sembra funzionare. Perché esattamente?
è perché ls
accetta *
come argomento ed espande tutti i file?
Capisco che posso fare:ls -d !(*e*)
(in Bash con extglob
set o in ksh).
Risposta accettata:
Quello che sta effettivamente facendo quel glob è abbinare un numero qualsiasi di caratteri, quindi un singolo carattere diverso da una e, quindi un numero qualsiasi di caratteri. Corrisponderà a qualsiasi file con un nome che non sia composto interamente da e.