Regular expression für ein Datum-Bereich
Wenn ich eine directory-Struktur wie diese
yyyy/dd/mm/<files>
Gibt es eine Möglichkeit, Suche nach einem string in allen Dateien in einem bestimmten Zeitrahmen über eine regex? Ich habe zum Beispiel einen Zeitrahmen: 2010/12/25 - 2011/01/01, muss ich mit grep alle Dateien in den Verzeichnissen die entsprechenden Termine vom 25 Dezember bis 1. Januar
Wenn ich das Tue programmgesteuert, ist es besser, Durchlaufen Sie den Datumsbereich und die grep-Dateien in den einzelnen yyyy/dd/mm directory als einen regex verwenden, um dies zu tun? Oder wäre es nicht einen Unterschied machen?
- Ich persönlich würde einfach Durchlaufen. Könnte es möglich sein, dies mit einem regex, aber es wäre ziemlich Komplex. Cue Jamie Zawinsky Zitat: "Manche Menschen, wenn Sie mit einem problem konfrontiert, denken, "ich weiß, ich werde Sie reguläre Ausdrücke verwenden." Nun haben Sie zwei Probleme.'
- Haben Sie jemals herausfinden? Ich bin mit den gleichen Problemen. Wenn Sie möchten, kann ich damit beginnen, eine Frage, wie gut.
- Behalf ich mir mit einer for-Schleife.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem Fall, es ist einfach genug:
passen auf eine Zeichenfolge, die ein Datum enthält in dem angegebenen Bereich. Aber im Allgemeinen, regexes sind nicht eine gute Passform für die passenden Datumsbereiche. Es ist immer eine Möglichkeit, aber selten eine gute.
Beispielsweise für den Bereich 2003/04/25-2011/04/04, erhalten Sie
Wenn ich tun musste, um so etwas wie dieses (und nicht das ERSTELLUNGSDATUM der Datei-Attribute), würde ich entweder RegexMagic (zu erstellen im Bereich Datum, regex) und PowerGREP zu tun (die grepping) wenn es ein one-time-job, aber diese sind nur unter Windows verfügbar. Wenn ich mir das öfter mal tun, ich würde schreiben Sie eine kleine Python-Skript, das geht durch meinen Verzeichnisbaum, analysiert das Datum für jedes Verzeichnis überprüft, ob es in Reichweite ist, und dann sieht Sie auf die Dateien in diesem Verzeichnis.
grep string <regex matching a set of files>
Vs.for date in <range of dates>: do grep string $date
?grep
. Ich denke, ersteres wäre wohl schneller, aber ich kann nicht sicher sagen. Nur um zu überprüfen, die offensichtliche: Können Sie nicht nur die Iteration über alle Dateien und betrachten Sie die Datei Schaffung Termine statt grepping Ihre Wege?