@OPERAZIONE,
Glob pettern non viene utilizzato solo per i nomi dei file?
No, il modello "glob" non viene utilizzato solo per i nomi dei file. puoi usarlo anche per confrontare le stringhe. Nei tuoi esempi, puoi usare case / esac per cercare schemi di stringhe.
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
In bash, quando usare il modello glob e quando usare l'espressione regolare? Grazie!
Le espressioni regolari sono più versatili e "convenienti" dei "modelli glob", tuttavia, a meno che non si eseguano compiti complessi che "globbing / globbing esteso" non possono fornire facilmente, non è necessario utilizzare regex. Le espressioni regolari non sono supportate per la versione di bash <3.2 (come menzionato da Dennis), ma puoi comunque usare il globbing esteso (impostando extglob). per il globbing esteso, vedere qui e alcuni semplici esempi qui .
Aggiornamento per OP: esempio per trovare file che iniziano con 2 caratteri (i punti "." Significa 1 carattere) seguiti da "g" utilizzando regex
es. output
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
In quanto sopra, i file vengono abbinati perché i loro nomi contengono 2 caratteri seguiti da "g". (cioè ..g).
L'equivalente con globbing sarà qualcosa del genere: (guarda il riferimento per il significato di ?e *)
$ for file in ??g*; do echo $file; done
abg
degree
..g