GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué esta expresión regular no funciona en Linux?

GNU find por defecto usa expresiones regulares de emacs, puede cambiar ese tipo con -regextype opción (ver man find).

Si usa -regextype posix-egrep tu expresión parece funcionar. Probablemente también podría reducir el patrón a ^.+(jpg|gif|exe)$

Con emacs:find . -regex '.+\(jpg\|gif\|exe\)$' . Consulte esta sección del manual de emacs para conocer esas reglas específicas de expresiones regulares. Necesitas escapar | y () para que no sean literales.


En emacs expresiones regulares ( , | y ) son literales a menos que escapado, esto es exactamente lo contrario de todos los demás formatos de expresiones regulares.

Tu expresión funciona como ^.+\.\(jpg\|exe\|gif\)$ .


Linux
  1. Linux:¿por qué usamos Su y no solo Su?

  2. ¿Linux Setuid no funciona?

  3. Linux – Arch Linux:¿Pacman no funciona al hacer chroot?

  4. Linux:¿por qué no funciona Setuid?

  5. ¿Por qué este "mientras se lee" funciona en una terminal, pero no en un script de Shell?

¿Por qué `exit &` no funciona?

Linux:¿por qué Rsync en Linux no conserva todas las marcas de tiempo (hora de creación)?

Linux - Ldd no encuentra la ruta, ¿cómo agregar?

¿Por qué no funciona la edición de javascript en Chrome Developer Tools?

¿Por qué 'dd' no funciona para crear un USB de arranque?

¿Por qué find -mtime no funciona como se esperaba en archivos con diferentes zonas horarias?