GNU/Linux >> Linux Esercitazione >  >> Linux

Perché questa espressione regolare non funziona su Linux?

GNU find di default usa le espressioni regolari di emacs, puoi cambiare quel tipo con -regextype opzione (vedi man find).

Se usi -regextype posix-egrep la tua espressione sembra funzionare. Probabilmente potresti anche ridurre il pattern a ^.+(jpg|gif|exe)$

Con emacs:find . -regex '.+\(jpg\|gif\|exe\)$' . Vedi questa sezione del manuale di emacs per quelle specifiche regole regex. Devi sfuggire a | e () per non essere letterali.


In emacs regexps ( , | e ) sono letterali a meno che sfuggito, questo è esattamente l'opposto di tutti gli altri formati di espressioni regolari.

La tua espressione funziona come ^.+\.\(jpg\|exe\|gif\)$ .


Linux
  1. Perché la sostituzione del processo Bash non funziona con alcuni comandi?

  2. Linux – Arch Linux:Pacman non funziona durante il chroot?

  3. Linux – Perché Setuid non funziona??

  4. Perché `esce &` non funziona?

  5. Perché find -exec mv {} ./target/ + non funziona?

Linux – Ldd non trova il percorso, come aggiungere?

Perché Tomcat funziona con la porta 8080 ma non con la 80?

Perché Windows non riconosce i file all'interno delle partizioni Linux?

ZFS sotto Linux, funziona?

La ripetizione automatica non funziona

Perché find -mtime non funziona come previsto su file con fusi orari diversi?