GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum funktioniert diese Regex nicht unter Linux?

GNU find verwendet standardmäßig reguläre Emacs-Ausdrücke, Sie können diesen Typ mit -regextype ändern Option (siehe man find).

Wenn Sie -regextype posix-egrep verwenden dein Ausdruck scheint zu funktionieren. Sie könnten das Muster dann wahrscheinlich auch auf ^.+(jpg|gif|exe)$ reduzieren

Mit emacs:find . -regex '.+\(jpg\|gif\|exe\)$' . Siehe diesen Abschnitt des Emacs-Handbuchs für diese spezifischen Regex-Regeln. Sie müssen | maskieren und () damit sie nicht wörtlich gemeint sind.


In Emacs Regexps ( , | und ) sind wörtlich es sei denn maskiert, ist dies genau das Gegenteil aller anderen regulären Ausdrucksformate.

Ihr Ausdruck funktioniert als ^.+\.\(jpg\|exe\|gif\)$ .


Linux
  1. Warum funktioniert die Bash-Prozesssubstitution bei einigen Befehlen nicht?

  2. Linux – Arch Linux:Pacman funktioniert beim Chrooten nicht?

  3. Warum funktioniert dieses „beim Lesen“ in einem Terminal, aber nicht in einem Shell-Skript?

  4. Warum funktioniert `exit &` nicht?

  5. Warum funktioniert find -exec mv {} ./target/ + nicht?

Linux – Ldd findet keinen Pfad, wie fügt man ihn hinzu?

Warum funktioniert Tomcat mit Port 8080, aber nicht mit 80?

Warum funktioniert das Bearbeiten von Javascript in den Chrome Developer Tools nicht?

Warum funktioniert „dd“ nicht zum Erstellen eines bootfähigen USB-Sticks?

Funktioniert ZFS unter Linux?

Automatische Wiederholung funktioniert nicht