10
votes

Regex pour les chiffres dans UNIX Trouver la commande

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\)"


1 commentaires

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.


4 Réponses :


6
votes

\ d 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 prend en charge). Vous pouvez utiliser [[[: chiffre:]]] ou [0-9] à la place.


1 commentaires

Vous pouvez utiliser [0-9] , mais si vous pouvez utiliser [[[: chiffre:]]] dépend de quel -regextype vous utilisez. Par exemple, emacs (le type par défaut) ne le supporte pas, tandis que posix-étendu fait. Voir GNU Windows Manuel: 8.5 Expressions régulières pour les descriptions de syntaxe liées en bas.



3
votes

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\)"


2 commentaires

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 dans la version de libc utilisé par trouver sur mon système (libc 2.3.4). Ymmv.



7
votes

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])


0 commentaires

1
votes

Vous pouvez utiliser les répéteurs tels que ceci: xxx

i Utilisez ceci pour trouver des sauvegardes du formulaire: xxx

FOO est le nom d'origine et les chiffres sont la date et l'heure.

(sur CENTOS 6.5)

PS -regextype POSIX-étendu fonctionne aussi.


0 commentaires