Usando buscar en la terminal macOS con expresiones regulares

Usando buscar en la terminal macOS con expresiones regulares

Estoy intentando buscar una carpeta que contenga variaciones de diferentes nombres de archivos de imágenes:

1_2-300x224.jpg
1_2-600x449.jpg
1_2-600x600.jpg
1_2-768x575.jpg
1_2-802x600.jpg
1_2.jpg

El plan es buscar y eliminar los archivos que terminan en 2-4 dígitos + 'x' + 2-4 dígitos. Puedo crear esta coincidencia enexpresión regularusando la expresión .*(\d{2,4}x\d{2,4}).jpg(esta expresión resalta todo excepto 1_2.jpg).

Sin embargo, la ejecución find . -name ".*(\d{2,4}x\d{2,4}).jpg"no arroja resultados.

¡Estoy desconcertado!

Respuesta1

Hay un par de problemas aquí. En primer lugar, como mencionó John, -namees necesario usar la coincidencia de subcadenas con globos -regexy, en segundo lugar, existen incompatibilidades de dialectos de expresiones regulares. Por defecto, GNU find usa expresiones regulares de Emacs y BSD find usa expresiones regulares posix-basic. Si lo has find.infoinstalado puedes leer más sobre ello aquí:

info find.info 'Reference' 'Regular Expressions' 'emacs regular expression'

Los dialectos de expresiones regulares admitidos se pueden encontrar aquí:

info find.info 'Reference' 'Regular Expressions'

Aquí:

* findutils-default regular expression syntax::
* emacs regular expression syntax::
* gnu-awk regular expression syntax::
* grep regular expression syntax::
* posix-awk regular expression syntax::
* awk regular expression syntax::
* posix-basic regular expression syntax::
* posix-egrep regular expression syntax::
* egrep regular expression syntax::
* posix-extended regular expression syntax::

encontrar GNU

Puedes hacer que tu expresión funcione posix-extendedasí con GNU find:

find . -regextype posix-extended -regex '.*[0-9]{2,4}x[0-9]{2,4}.jpg'

Producción:

./1_2-600x600.jpg
./1_2-802x600.jpg
./1_2-600x449.jpg
./1_2-300x224.jpg
./1_2-768x575.jpg

encontrar BSD

No tengo acceso a BSD Find, pero creo que esto debería funcionar:

find -E . -regex '.*[0-9]{2,4}x[0-9]{2,4}\.jpg'

información relacionada