Einführung
Haben Sie sich schon einmal gefragt, wie Sie Dateien in einem Verzeichnis finden, die seit Ewigkeiten nicht mehr angerührt wurden? Ob Sie alte Dateien aufräumen, Daten archivieren oder nach veralteten Dateien suchen – der find-Befehl von Linux ist die Lösung Ihrer Wahl. In diesem Tipp zeigen wir Ihnen, wie Sie mit einem einfachen und zugleich leistungsstarken Befehl Dateien in Linux nach ihrem Alter auflisten.
Der Befehl
find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;
Mit diesem Befehl können Sie Dateien anhand ihres letzten Änderungsdatums finden, sie nach Typ oder Name filtern und detaillierte Informationen zu ihnen anzeigen.
Der Befehl im Detail
1. /path/to/files
Dies gibt das Verzeichnis an, in dem gesucht werden soll. Ersetzen Sie es durch den tatsächlichen Ordnerpfad, den Sie durchsuchen möchten.
- Beispiel: Wenn Sie Ihre Fotobibliothek durchsuchen möchten, verwenden Sie
~/Pictures.
2. -type f
Die Option -type gibt an, nach welcher Art von Elementen gesucht werden soll.
f: bezieht sich nur auf Dateien (Verzeichnisse werden ignoriert).
3. -name '*.jpg'
Damit werden die Ergebnisse nach Dateinamen oder Erweiterungen gefiltert.
- Beispiel:
*.jpgfindet Dateien, die auf.jpg. - Sie können es durch andere Muster ersetzen, zum Beispiel
*.txtfür Textdateien oder*.logfür Protokolldateien.
4. -mtime +30
Dies ist der Schlüssel zum Filtern von Dateien nach ihrem Alter.
+30: findet Dateien, die zuletzt vor mehr als 30 Tagen geändert wurden.- Ersetzen Sie
30durch eine beliebige Zahl, die Ihren Anforderungen entspricht:- 1 Jahr: verwenden Sie
-mtime +365. - 1 Woche: verwenden Sie
-mtime +7.
- 1 Jahr: verwenden Sie
5. -exec ls -l {} \;
Dies teilt Linux mit, was mit den gefundenen Dateien geschehen soll.
-exec: führt einen Befehl für jede Datei aus.ls -l: listet detaillierte Informationen zu jeder Datei auf (z. B. Größe, Berechtigungen, Eigentümer und letztes Änderungsdatum).{}: Platzhalter für jede gefundene Datei.\;: signalisiert das Ende des Befehls.
Profi-Tipp
Möchten Sie den Befehl testen, ohne ls -l auszuführen? Lassen Sie den Teil -exec weg:
find /path/to/files -type f -name '*.jpg' -mtime +30
Damit werden lediglich die Dateipfade ohne weitere Details aufgelistet.
Warum sollte man diesen Befehl verwenden?
Der find-Befehl ist unglaublich vielseitig und nützlich für Systemwartungsaufgaben:
- Speicherplatz freigeben: alte Dateien erkennen und löschen.
- Ältere Daten archivieren: Dateien, die monate- oder jahrelang nicht angerührt wurden, in den Sicherungsspeicher verschieben.
- Veraltete Dateien überwachen: in kritischen Verzeichnissen nach veralteten Dateien suchen.
Praktische Beispiele
Beispiel 1: Alte Dokumente finden
Suchen Sie nach .docx-Dateien in Ihrem Ordner Documents, die seit über 90 Tagen nicht geändert wurden:
find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;
Beispiel 2: Große Dateien finden, die älter als 6 Monate sind
Suchen Sie Dateien, die größer als 100 MB sind, in /home/user, die seit über 6 Monaten nicht geändert wurden:
find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
-size +100M: filtert Dateien, die größer als 100 MB sind.ls -lh: zeigt Dateigrößen in lesbarem Format an (z. B. MB, GB).
Beispiel 3: Alte PDFs suchen
Suchen Sie .pdf-Dateien in /home/user/Downloads, die im letzten Jahr nicht geändert wurden:
find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;
Beispiel 4: Kürzlich geänderte Dateien finden
Suchen Sie nach .txt-Dateien, die in den letzten 7 Tagen geändert wurden, in /var/www:
find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
-mtime -7: findet Dateien, die in den letzten 7 Tagen geändert wurden.
Beispiel 5: Alte temporäre Dateien entfernen
Löschen Sie Dateien in /tmp, die seit über 30 Tagen nicht geändert wurden:
find /tmp -type f -mtime +30 -exec rm {} \;
rm: löscht die Dateien.- Warnung: mit Vorsicht verwenden, da die Dateien dadurch endgültig entfernt werden.
Beispiel 6: Alte Mediendateien archivieren
Verschieben Sie .mp4-Dateien, die älter als 60 Tage sind, aus ~/Videos in einen Archivordner:
find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
mv: verschiebt Dateien in den angegebenen Ordner.
Beispiel 7: Dateien finden, die in einem bestimmten Zeitraum erstellt wurden
Suchen Sie nach .log-Dateien, die vor 30 bis 60 Tagen erstellt wurden, in /var/log:
find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
-mtime +30: Dateien, die älter als 30 Tage sind.-mtime -60: Dateien, die in den letzten 60 Tagen geändert wurden.
Beispiel 8: Leere Dateien finden, die älter als 1 Woche sind
Suchen Sie leere Dateien in /home/user, die in der letzten Woche nicht geändert wurden:
find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
-empty: filtert Dateien mit der Größe null.
Beispiel 9: Dateien nach Zugriffszeit suchen
Suchen Sie .png-Dateien in /var/www/html, auf die in den letzten 90 Tagen nicht zugegriffen wurde:
find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
-atime: filtert Dateien nach Zugriffszeit statt nach Änderungszeit.
Beispiel 10: Kürzlich erstellte Dateien finden
Suchen Sie Dateien in /home/user, die in den letzten 3 Tagen erstellt wurden:
find /home/user -type f -ctime -3 -exec ls -l {} \;
-ctime: filtert Dateien nach Erstellungszeit.
Beispiel 11: Dateien nach Berechtigungen finden
Suchen Sie Dateien in /etc mit bestimmten Berechtigungen (z. B. von anderen beschreibbar):
find /etc -type f -perm /o+w -exec ls -l {} \;
-perm /o+w: findet Dateien, die von anderen beschrieben werden können.
Beispiel 12: Dateien finden, die in der letzten Stunde geändert wurden
Suchen Sie Dateien, die in der letzten Stunde geändert wurden, in /home/user/Documents:
find ~/Documents -type f -mmin -60 -exec ls -l {} \;
-mmin -60: filtert Dateien, die in den letzten 60 Minuten geändert wurden.
Beispiel 13: Dateien mit bestimmtem Eigentümer finden
Suchen Sie Dateien, die dem Benutzer jose gehören, in /var/log, die seit über 90 Tagen nicht geändert wurden:
find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
-user jose: filtert Dateien, die dem angegebenen Benutzer gehören.
Beispiel 14: Bestimmte Verzeichnisse ausschließen
Suchen Sie .jpg-Dateien in /home/user, die älter als 30 Tage sind, mit Ausnahme des Ordners Downloads:
find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
-not -path: schließt Dateien im angegebenen Verzeichnis aus.
Beispiel 15: Dateien finden, die an einem bestimmten Datum geändert wurden
Suchen Sie Dateien, die genau vor 10 Tagen geändert wurden, in /home/user:
find /home/user -type f -mtime 10 -exec ls -l {} \;
-mtime 10: findet Dateien, die genau vor 10 Tagen geändert wurden.
Beispiel 16: Dateien mit bestimmten Erweiterungen finden
Suchen Sie nach .zip und .tar.gz-Dateien, die älter als 60 Tage sind, in /backups:
find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
\( -name '*.zip' -o -name '*.tar.gz' \): sucht nach mehreren Dateierweiterungen.
Fazit
Der find-Befehl von Linux ist ein leistungsstarkes Werkzeug zur Verwaltung von Dateien nach Alter, Typ und Name. Ob Sie Speicherplatz freigeben, alte Daten archivieren oder veraltete Dateien überwachen – mit diesem Befehl haben Sie Ihre Verzeichnisse vollständig im Griff.
Probieren Sie es noch heute aus und bringen Sie Ihre Linux-Kenntnisse auf die nächste Stufe!