Il modello di globbing del nome file standard per abbinare una cifra è [0-9]
. Questo corrisponde a una singola cifra:
cat file[0-9].txt
Per selezionare solo due di questi:
cat file[25].txt
Per numeri maggiori di 9, l'espansione del controvento sarà utile (ma vedi la nota sotto per la differenza tra schemi di globbing ed espansioni del controvento):
cat file{25..60}.txt
Ancora una volta, l'espansione del controvento consente anche i singoli numeri:
cat file{12,45,900,xyz}.txt
(si noti che nell'esempio sopra, l'espansione del controvento non comporta un ciclo aritmetico, ma genera semplicemente nomi basati sulle stringhe fornite).
In bash
, con l' extglob
opzione shell abilitata ( shopt -s extglob
), funzionerà anche:
cat file@(12|45|490|foo).txt
Lo @(...)
schema corrisponderà a uno qualsiasi degli |
schemi inclusi -dimitati.
La differenza tra i modelli globbing come [...]
e @(...)
ed espansioni bretelle, è che un espansione delle parentesi graffe viene generato sulla riga di comando e non può effettivamente corrispondere eventuali nomi esistenti nella directory corrente. Un modello globbing di nome file corrisponderà ai nomi, ma la shell non si lamenterà se non esiste un nome possibile. Se non esiste un nome corrispondente, il modello rimarrà non espanso, a meno che non nullglob
sia impostata anche l' opzione shell, nel qual caso il motivo viene rimosso.
Esempio:
touch file1
ls file[0-9]
Qui, file1
verrà mostrato solo l'elenco dei file per .
Con ls file{0..9}
, ls
si lamenterebbe di non aver trovato file0
, file2
ecc.
Nel seguente esempio, il primo comando toccherà solo i nomi esistenti che corrispondono al modello dato, mentre la seconda riga creerà file che non esistono già:
touch file[0-9]
touch file{0..9}
file45.txt
. L'espressione parentesi[...]
funziona esattamente come nell'espressione regolare ma viene utilizzata!
al posto di^
per dire "non in". Un[...]
modello corrisponderà sempre a un singolo carattere.