Uso de expresión regular con ls

Estoy tratando de usar ER (Extended Regular Expressions) 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 obtengo este error: ls: .+..+: No such file or directory .

Estás confundiendo la expresión regular con globbing de shell . Si desea usar expresiones regulares para hacer coincidir los nombres de archivos, puede hacer lo siguiente:

 $ ls | egrep '.+\..+' 

No dices qué shell estás usando, pero generalmente no admiten expresiones regulares de esa manera, aunque sí hay herramientas de CLI de * nix comunes ( grep , sed , etc.) que sí lo hacen.

Lo que shells como bash do support es globbing , que usa algunos caracteres similares (ej., *) Pero no es lo mismo.

Las versiones más nuevas de bash tienen un operador de expresión regular, =~ :

 for x in `ls`; do if [[ $x =~ .+\..* ]]; then echo $x; fi; done 
    Intereting Posts