Expression régulière pour une plage de dates
Si j'ai une structure de répertoire comme ce
yyyy/dd/mm/<files>
Est-il un moyen de filtrer une chaîne de caractères dans tous les fichiers dans un laps de temps donné à l'aide d'une regex? Par exemple, j'ai un laps de temps: 2010/12/25 - 2011/01/01, j'ai besoin de filtrer tous les fichiers dans les répertoires correspondant aux dates du 25 décembre au 1er janvier
Si je fais de la programmation, est-il préférable d'effectuer une itération sur la plage de dates et grep fichiers dans chaque aaaa/jj/mm répertoire que d'utiliser une regex pour ce faire? Ou ne serait-il pas faire une différence?
- Personnellement, je serais juste à itérer. Il pourrait être possible de faire cela avec une regex, mais il serait assez complexe. Cue Jamie Zawinsky cite: "Certaines personnes, lorsqu'ils sont confrontés à un problème, pense que "je sais, je vais utiliser des expressions régulières." Maintenant, ils ont deux problèmes".
- Avez-vous jamais comprendre cela? Je suis en cours d'exécution dans la même situation. Si vous voulez je peux commencer à une question ainsi.
- J'ai eu recours à l'aide d'une boucle for.
Vous devez vous connecter pour publier un commentaire.
Dans votre cas, c'est assez simple:
va correspondre à une chaîne qui contient une date dans l'intervalle spécifié. Mais généralement, les regexes ne sont pas un bon ajustement pour la mise en correspondance des plages de dates. C'est toujours une possibilité, mais rarement une bonne idée.
Par exemple, pour la gamme 2003/04/25-2011/04/04, vous obtenez
Si je devais faire quelque chose comme ceci (et ne pourrait pas utiliser les dates de création dans les attributs de fichier), je voudrais utiliser RegexMagic (pour créer de la date, regex) et PowerGREP faire le grepping) si c'est un travail à temps, mais ils ne sont disponibles que sur Windows. Si j'avais à le faire plus souvent, j'aimerais écrire un petit script Python qui marche à travers mon arborescence de répertoire, analyse la date pour chaque dossier, vérifie s'il est à portée, et examine ensuite les fichiers dans ce répertoire.
grep string <regex matching a set of files>
Vs.for date in <range of dates>: do grep string $date
?grep
. Je suppose que l'ancien serait plus rapide, mais je ne peux pas dire à coup sûr. Juste pour vérifier ce qui est évident: ne Pouvez-vous pas juste une itération sur tous les fichiers et regarder le fichier date de création au lieu de grepping leurs chemins?