Normalerweise das date +%d
ergibt die Ausgabe 08
für das aktuelle Datum, 10.08.2017. Aber wenn ich den ls -lrt
mache Auf einem Pfad ist das Datumsformat wie folgt:Oct 8 15:03
, also, wie bekomme ich die Dateien des aktuellen Datums?
Ich verwende den Befehl
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
aber es gibt mir nicht die Datei des heutigen Datums (10.08.2017), obwohl es mir die korrekte Ausgabe für die Daten vom 10. bis 31. eines jeden Monats gibt.
Akzeptierte Antwort:
Das ist ein bisschen Betrug, aber es funktioniert.
Erstellen Sie zunächst eine leere Referenzdatei mit einem bestimmten Zeitstempel, nämlich Mitternacht:
touch -d "$(date +%FT00:00:00)" /tmp/midnight
Suchen Sie dann nach Dateien, die neuer sind als diese Datei:
find . -type f -newer /tmp/midnight
Wenn Sie ls
möchten -ähnliche Ausgabe von find
statt nur die Pfadnamen:
find . -type f -newer /tmp/midnight -ls
Wenn Sie Dateien finden möchten, die dem Muster XYZ.LOG*
entsprechen :
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
Wenn Sie GNU find
haben , können Sie die temporäre Datei umgehen und
find . -type f -newermt 0
um Dateien zu erhalten, die seit Mitternacht geändert wurden.
Verwandte:Warum *nicht* `ls` parsen?