@OP,
¿Glob Pettern no solo se usa para nombres de archivos?
No, el patrón "glob" no solo se usa para los nombres de archivo. también puedes usarlo para comparar cadenas. En sus ejemplos, puede usar case / esac para buscar patrones de cadenas.
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
En bash, ¿cuándo usar el patrón glob y cuándo usar expresiones regulares? ¡Gracias!
Las expresiones regulares son más versátiles y "convenientes" que los "patrones glob", sin embargo, a menos que esté realizando tareas complejas que "globbing / globbing extendido" no puede proporcionar fácilmente, entonces no es necesario utilizar regex. Las expresiones regulares no son compatibles con la versión de bash <3.2 (como mencionó dennis), pero aún puede usar globbing extendido (por configuración extglob
). para el globbing extendido, vea aquí y algunos ejemplos simples aquí .
Actualización para OP: Ejemplo para buscar archivos que comienzan con 2 caracteres (los puntos "." Significa 1 carácter) seguidos de "g" usando expresiones regulares
por ejemplo, salida
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
En lo anterior, los archivos coinciden porque sus nombres contienen 2 caracteres seguidos de "g". (es decir ..g
).
El equivalente con globbing será algo como esto: (busque en la referencia el significado de ?
y *
)
$ for file in ??g*; do echo $file; done
abg
degree
..g