regulares - regex ejemplos
Uso de expresiones regulares con ls (2)
Estoy tratando de usar ER (Expresiones regulares extendidas) con ls
como ls .+/..+
.
Estoy intentando imprimir todos los archivos que contienen una extensión (sé que podría haber usado ls *.*
, Pero quería intentar usar ER).
Cuando ejecuto ese código recibo este error: ls: .+..+: No such file or directory
.
Estás confundiendo la expresión regular con los globos de shell . Si desea utilizar expresiones regulares para hacer coincidir los nombres de los archivos, puede hacerlo:
$ ls | egrep ''.+/..+''
No dice qué shell está utilizando, pero generalmente no admiten expresiones regulares de esa manera, aunque hay herramientas comunes de CLI de * nix ( grep
, sed
, etc.) que sí lo hacen.
Lo que soportan los shells como bash es el globbing , que usa algunos caracteres similares (por ejemplo, *) pero no es lo mismo.
Las versiones más recientes de bash tienen un operador de expresión regular, =~
:
for x in `ls`; do
if [[ $x =~ .+/..* ]]; then
echo $x;
fi;
done