J'ai cette commande:
find reports/ -type f -mtime +90 -regex "reports/201[01]/\([1-9]\|1[012]\)/\([1-9]\|[12][0-9]\|3[01]\)/.*\.\(csv\|sql\|txt\|xls\|zip\)"
4 Réponses :
\ d code> est une extension d'expressions régulières qui ne sont pas prises en charge par EMACS Expressions régulières et des expressions régulières POSIX (celles-ci sont les flavors
trouver code> prend en charge). Vous pouvez utiliser
[[[: chiffre:]]] code> ou
[0-9] code> à la place. P>
Vous pouvez utiliser [0-9] code>, mais si vous pouvez utiliser
[[[: chiffre:]]] code> dépend de quel
-regextype code> vous utilisez. Par exemple,
emacs code> (le type par défaut) ne le supporte pas, tandis que
posix-étendu code> fait. Voir GNU Windows Manuel: 8.5 Expressions régulières pour les descriptions de syntaxe liées en bas.
Ce qui suit est laid et ne désamera pas les dates non valides, mais peut être suffisamment proche:
find reports/ -type f -regex ".*/reports/[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]/[0-9][0-9]\.\(csv\|sql\|txt\|xls\|zip\)"
Cela a l'air bien (et je vais le tester dans un peu) mais est-il possible de resserrer les gammes avec quelque chose comme "[0-9] {4}" au lieu de le répéter quatre fois d'affilée?
Le quantificateur numérique "{4}" n'a pas semblé fonctionnant avec la version de Regexec code> dans la version de
libc code> utilisé par
trouver code> sur mon système (libc 2.3.4). Ymmv.
C'est ce que j'ai utilisé dans le passé:
Year: (19|20)[0-9][0-9] Month: 0[1-9]|1[012] Day: (0[1-9]|[12][0-9]|3[01])
Vous pouvez utiliser les répéteurs tels que ceci: i Utilisez ceci pour trouver des sauvegardes du formulaire: p> où (sur CENTOS 6.5) P> PS FOO code> est le nom d'origine et les chiffres sont la date et l'heure. P>
-regextype POSIX-étendu code> fonctionne aussi. p> p>
Notez que l'optionregex n'est pas standard sur toutes les plateformes UNIX. Je pense que cela ne peut être que sur GNU Trouver. Vous pouvez faire une méthode plus standard en tuyant la sortie à Egrep.