GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi cette regex ne fonctionne-t-elle pas sous Linux ?

GNU find utilise par défaut les expressions régulières emacs, vous pouvez changer ce type avec -regextype option (voir man find).

Si vous utilisez -regextype posix-egrep votre expression semble fonctionner. Vous pourriez alors aussi probablement réduire le modèle à ^.+(jpg|gif|exe)$

Avec emacs :find . -regex '.+\(jpg\|gif\|exe\)$' . Voir cette section du manuel emacs pour ces règles spécifiques aux regex. Vous devez échapper à | et () pour qu'ils ne soient pas littéraux.


Dans emacs regexps ( , | et ) sont littéraux à moins que échappé, c'est exactement le contraire de tous les autres formats d'expressions régulières.

Votre expression fonctionne comme ^.+\.\(jpg\|exe\|gif\)$ .


Linux
  1. Pourquoi l'expression régulière fonctionne-t-elle dans X mais pas dans Y ?

  2. Linux Setuid ne fonctionne pas ?

  3. Pourquoi ce "pendant la lecture" fonctionne-t-il dans un terminal, mais pas dans un script shell ?

  4. Linux - Ldd ne trouve pas de chemin, comment ajouter ?

  5. Pourquoi find -exec mv {} ./target/ + ne fonctionne-t-il pas ?

Linux - Pourquoi Rsync sur Linux ne conserve pas tous les horodatages (heure de création) ?

Pourquoi Tomcat fonctionne-t-il avec le port 8080 mais pas 80 ?

Pourquoi la modification de javascript dans les outils de développement Chrome ne fonctionne-t-elle pas ?

Pourquoi 'dd' ne fonctionne-t-il pas pour créer une clé USB amorçable ?

ZFS sous Linux, ça marche ?

Pourquoi find -mtime ne fonctionne-t-il pas comme prévu sur des fichiers avec des fuseaux horaires différents ?