BASH: Wie filtere ich Verzeichnisse nach einem bestimmten Datumsbereich im Dateinamen?

1691
Matt

Hier ist das Bild ...

Datumsformat: J% m% d% H% M% S% Dies ist mein Dateinamenformat: file_sub1_20110501000000.txt
Verzeichnisstruktur:

dir/  sub1/  file_sub1_20110501003000.txt  file_sub1_20110501010000.txt  file_sub1_20110501013000.txt  file_sub1_20110501020000.txt  --more--  sub2/  file_sub2_20110501003000.txt  file_sub2_20110501010000.txt  file_sub2_20110501013000.txt  file_sub2_20110501020000.txt  --more--  --more--/  --more--.txt  

Mein Problem ist das effiziente Filtern von Dateinamen innerhalb des Bereichs, in dem
($ file_date <= $ cur_date && $ file_date> = $ prev_date)

Ich habe mir überlegt, jede Datei durchzugehen und zu vergleichen, ob die Datumsangaben in Reichweite sind, aber ich finde den Ansatz zu langsam, wenn ich mit Tausenden von Dateien arbeite.

Gibt es einen schnelleren Weg, dies zu tun?

Vielen Dank!

1

1 Antwort auf die Frage

0
William Jackson

Sie sollten in der Lage sein, alle Dateien mit dem heutigen oder dem gestrigen Datum im Dateinamen mit dem folgenden Befehl aufzulisten:

find . -iname "*`date +%Y%m%d`*" -or -iname "*`date -v -d1 +%Y%m%d`*" 

dir/Wenn Sie diesen Befehl ausführen, werden alle Unterverzeichnisse erneut aufgerufen.