Sie können find
verwenden . Datum nach Bedarf und Verwendung berechnen,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -print
Löschen Sie sie nach der Bestätigung,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -delete
Für den Anfang finden Sie erstellte Dateien auf eine bestimmte Zeit ist etwas schwierig, da die Erstellungszeit meist nirgendwo gespeichert oder schwer zu bekommen ist. Was Sie haben, ist mtime
, oder die letzte Änderungszeit, und ctime
Dies ist die "Änderungszeit", die bei Änderungen am Inode aktualisiert wird. Ich nehme an, Sie möchten die Änderungszeit.
Das Auffinden von Dateien, die an einem bestimmten Datum geändert wurden, erwies sich seit find
als leicht interessant scheint es ein bisschen schwierig zu machen, es mit Dateien richtig zu machen, die genau um Mitternacht erstellt wurden.
Wenn wir die relative Zeit kennen (d. h. es war gestern), könnten wir find -daystart -mtime 1
verwenden , aber es findet die geänderte Datei zur falschen Mitternacht, Aug 8 00:00
. Dies scheint jedoch zu funktionieren:
find dir/ -daystart -mtime +0 \! -mtime +1 -ls
Wenn Sie die relative Zeit nicht berechnen möchten, und Ihre find
hat -newerXY
:
find dir/ -newermt 'Aug 7 00:00' \! -newermt 'Aug 8 00:00' -ls
Auch hier werden die Dateien, die genau um Mitternacht erstellt wurden, falsch angezeigt, da der Vergleich "neuer" ist, nicht "neuer oder so alt wie". Wenn Ihr System jedoch eine Genauigkeit von unter einer Sekunde für Zeitstempel hat, kann es schwierig sein, dies zu erreichen, aber es passiert, wenn Sie mit Dateien testen, die von touch
erstellt wurden ...
Ein haariger Workaround dafür wäre etwa so:
find dir/ -newermt 'Aug 6 23:59:59.999999999' \! -newermt 'Aug 7 23:59:59.999999999' -ls
Fügen Sie in jedem Fall den erforderlichen -name "DBG_A_sql*"
hinzu nur die Dateien mit dem richtigen Namen zu nehmen. Sie können die -ls
ersetzen am Ende mit -delete
um die Dateien zu löschen, anstatt sie aufzulisten. (-ls
, -delete
und -newerXY
existieren zumindest in GNU find und dem BSD find unter OS X.)
Natürlich könnten Sie die Textdarstellung des Datums tatsächlich parsen, aber ls
macht es schwierig, es richtig zu machen, wenn ein Joker Dateien mit nicht druckbaren Zeichen erstellt. Sicher, die Beispieldateien haben keine solchen, aber im Allgemeinen könnte jeder sie erstellen, insbesondere in /tmp
.
(Allerdings mit | xargs rm
Sie würden diese Dateien einfach übersehen, und da Dateinamen keine Schrägstriche enthalten dürfen, wäre es für jeden schwierig, auf Ihren rm
zu zeigen in ein anderes Verzeichnis.)
Bash-Schleife einfach
for file in /tmp/DBG_A_sql* ; do
[ "$(date -I -r "$file")" == "2016-08-07" ] && rm "$file"
done