Anleitung - Verwendung des find-Befehls mit -newermt-Option

  • Verwendung des find-Befehls mit -newermt-Option:

    Der find-Befehl ist ein leistungsstarkes Werkzeug in der Linux-Umgebung, um Dateien basierend auf verschiedenen Kriterien zu suchen.

    Mit der -newermt-Option können Dateien gefunden werden, die neuer als eine bestimmte Zeitmarke sind.

    Dateien vom aktuellen Datum finden:

    Code
    find /pfad/zum/verzeichnis -newermt $(date '+%Y-%m-%d')

    Ersetze "/pfad/zum/verzeichnis" durch den tatsächlichen Pfad zu dem Verzeichnis, das die Dateien enthält. Dieser Befehl sucht nach Dateien, die neuer als die heutige Zeitmarke sind.

    Beispiel:

    Code
    find ~/Dokumente -newermt $(date '+%Y-%m-%d')

    Dies gibt eine Liste der Dateien im Verzeichnis "~/Dokumente" aus, die heute erstellt wurden.

    Dateien vom Datum bis Datum finden:

    Um Dateien in einem bestimmten Zeitraum zu finden, gib einfach zwei Datumsgrenzen an:

    Code
    find /pfad/zum/verzeichnis -newermt 2021-11-01 ! -newermt 2021-11-09

    Dieser Befehl sucht nach Dateien, die nach dem 1. November 2021 erstellt wurden, aber nicht nach dem 9. November 2021.

    Dateien von Gestern finden:

    Um Dateien zu finden, die gestern erstellt wurden:

    Code
    find /pfad/zum/verzeichnis -newermt $(date -d "yesterday" '+%Y-%m-%d') ! -newermt $(date '+%Y-%m-%d')

    Hier sucht der Befehl nach Dateien, die gestern erstellt wurden, aber nicht nach heute. Das selbe geht übrigens auch über find -mtine -1

    • -mtime +30 bedeutet Datei suchen, die vor 30 Tagen geändert wurde.
    • -mtime -30 bedeutet weniger als 30 Tage.
    • -mtime 30 ohne + oder – bedeutet genau 30 Tage.


    Beispiele für JPG-Bilder:

    Alle JPG-Bilder vom Datum finden:

    Code
    find /pfad/zum/verzeichnis -newermt 2023-11-01 ! -newermt 2023-11-09 -name "*.jpg"

    Dieser Befehl sucht nach JPG-Bildern, die zwischen dem 1. November 2023 und dem 8. November 2023 erstellt wurden.

    Alle JPG-Bilder von Gestern finden:

    Code
    find /pfad/zum/verzeichnis -newermt $(date -d "yesterday" '+%Y-%m-%d') ! -newermt $(date '+%Y-%m-%d') -name "*.jpg"

    Hier werden JPG-Bilder gesucht, die gestern erstellt wurden.

    Nach Erstellungs- und Bearbeitungsdatum sortieren:

    Nach Erstellungsdatum sortieren:

    Code
    find /pfad/zum/verzeichnis -type f -newermt 2023-11-01 ! -newermt 2023-11-09 -exec stat --format="%Y %n" {} + | sort -n

    Dieser Befehl sucht nach Dateien, die zwischen dem 1. November 2023 und dem 8. November 2023 erstellt wurden, und listet sie nach ihrem Erstellungsdatum auf.

    Nach dem zuletzt bearbeiteten Datum sortieren:

    Code
    find /pfad/zum/verzeichnis -type f -newermt 2023-11-01 ! -newermt 2023-11-09 -exec stat --format="%Y %n" {} + | sort -n

    Hier sucht der Befehl nach Dateien, die zwischen dem 1. November 2023 und dem 8. November 2023 zuletzt bearbeitet wurden, und listet sie nach dem zuletzt bearbeiteten Datum auf.

    Beispiele für ODT-Dateien:

    ODT-Dateien nach Erstellungsdatum finden:

    Code
    find /pfad/zum/verzeichnis -type f -name "*.odt" -newermt 2023-11-01 ! -newermt 2023-11-09 -exec stat --format="%Y %n" {} + | sort -n

    Dieser Befehl sucht nach ODT-Dateien, die zwischen dem 1. November 2023 und dem 8. November 2023 erstellt wurden, und listet sie nach ihrem Erstellungsdatum auf.

    ODT-Dateien nach zuletzt bearbeitetem Datum finden:

    Code
    find /pfad/zum/verzeichnis -type f -name "*.odt" -newermt 2023-11-01 ! -newermt 2023-11-09 -exec stat --format="%Y %n" {} + | sort -n

    Hier sucht der Befehl nach ODT-Dateien, die zwischen dem 1. November 2023 und dem 8. November 2023 zuletzt bearbeitet wurden, und listet sie nach dem zuletzt bearbeiteten Datum auf.

    Alle Unterordner einbeziehen:

    Beide der oben genannten Befehle berücksichtigen standardmäßig bereits alle Unterordner. Der Parameter -type f sorgt dafür, dass nur Dateien (keine Ordner) in Betracht gezogen werden, aber alle Unterordner werden durchsucht.

    Alias erstellen (optional):

    Füge die entsprechenden Zeilen zu deiner Shell-Konfigurationsdatei hinzu und aktiviere die Aliase. Jetzt kannst du einfach die definierten Aliase wie findtoday, findjpg, usw. verwenden, um die gewünschten Dateien zu finden.

    Auch kann man sich auch ein Script erstellen. Welches alle Bilder nach Erstellungsdatum unter ~/Bilder verschiebt/sortiert Beispiel ~/Bilder/2020, ~/Bilder/2021 etc. Nach dem selben Muster eben auch Dokumente nach Erstellungs- und/oder Bearbeitungsdatum sortieren und Nach Datumsformat z.B. YYYY-MM-DD_Dateiname umbenennen lassen, in Verbindung mit grep alle Rechnungen von "Herr Müller" nach eines Zeitraums filtern usw.

    Der find Befehl bietet noch zahlreiche weitere Funktionen, die aber den Rahmen sprängen würden. Z.B. können mit atime Zugriffe auf Dateien geprüft werden (wobei diese nicht mal geändert wurden sein müssen) Beisiel: find ~/Dokumente -iname "*.txt" -atime -30 der Befehl find atime gibt die Liste aller TXT-Dateien aus, auf die in den letzten 30 Tagen zugegriffen wurde. Wobei hier genau wie bei mtime - innerhalb der angegebenen Tage + vor der zahl der angegebenen Tage und ohne - oder + genau an den Tag bedeutet. Genauso ist es möglich nur nach Dateien mit bestimmten Zugriffsrechten zu suchen bzw. diese zu ändern. Bsp.: find . -type f -print0 | xargs -0 chmod 0644 Dateien rekursiv mit chmod ab dem aktuellen Verzeichnis ändern, jedoch nicht die Verzeichnisse. Mit -type d das selbe für Ordner. usw.

    Diese Anleitung sollte dir helfen, Dateien nach verschiedenen Kriterien zu suchen und zu organisieren.

  • Danke!

    Kleine Ergänzung zum Verständnis: Die Option in der ursprünglichen form lautet -newer, die Bedeutung der beiden folgenden Buchstaben (hier mt) ist in den Manpages dokumentiert.

    Manpages "find":

    Zitat

    -newerXY Bezug
    Dies ist erfolgreich, wenn der Zeitstempel X der Datei als neuer als der der Datei Y der Datei Bezug erkannt wird. Die Zeichen X und Y sind aus folgenden Buchstaben frei wählbar:

    a Die Zugriffszeit der Datei Bezug
    B Die Erstellungszeit der Datei Bezug
    c Die Inode-Statusänderungszeit von Bezug
    m Die Änderungszeit der Datei Bezug
    t Bezug wird direkt als eine Zeit interpretiert

    Einige Kombinationen sind ungültig. So darf X bespielsweise nicht t sein. Einige Kombinationen sind nicht auf allen Systemen implementiert. B wird beispielsweise nicht von allen Systemen unterstützt. Falls eine ungültige oder nicht unterstützte Kombination von XY angegeben wurde, kommt es dadurch zu einem schwerwiegenden Fehler. Zeitangaben werden diesbezüglich wie das Argument zu der Option -d von GNU-date interpretiert. Falls Sie versuchen die Erstellungszeit einer Bezugsdatei zu benutzen und die Erstellungszeit nicht bestimmt werden kann, kommt es dadurch zu einer Nachricht über einen schwerwiegenden Fehler. Falls Sie einen Test angeben, der sich auf die Erstellungszeit der Dateien bezieht, die untersucht werden, wird dieser Test für jene Dateien fehlschlagen, deren Erstellungszeit nicht bekannt ist.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!