GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verzeichnisse mit allen Dateien finden, die älter als X sind?

Es ist wahrscheinlich möglich, dies zu tun, ohne Dateien mit Prozesssubstitution oder so etwas zu erstellen, aber hier ist eine schnelle und schmutzige Lösung:

find . -type f -mtime +30 -printf '%h\n' | sort | uniq > old.txt
find . -type f -mtime -30 -printf '%h\n' | sort | uniq > new.txt
grep -vf new.txt old.txt

Der erste Befehl gibt den Pfad jeder Datei aus, die vor mehr als 30 Tagen geändert wurde (in -printf von find -- zumindest mit GNU find auf meinem System -- %h druckt den gesamten Pfad außer dem eigentlichen Dateinamen), sortiert diese dann und entfernt alle Duplikate und legt das Ganze in eine Datei namens old.txt .

Der zweite Befehl macht dasselbe, aber mit jeder Datei, die vor weniger als 30 Tagen geändert wurde, und fügt sie in eine andere Datei ein, new.txt .

Die grep-Zeile gibt jede Zeile aus old.txt aus, die nicht in new.txt vorkommt – also gibt sie Ihnen eine Liste von Verzeichnissen, die nur enthalten Dateien, die vor mehr als 30 Tagen zuletzt geändert wurden.

Dies alles unter Verwendung der GNU-Versionen der Dienstprogramme. Ich weiß nicht, ob die Syntax mit den BSD-Versionen übereinstimmt usw.


Endlich den magischen Einzeiler herausgefunden:

for dir in `find . -type d -mtime +30`; do test `find $dir -type f -mtime -30 -print -quit` || echo $dir; done

Dadurch werden alle Verzeichnisse gedruckt, die eine Änderungszeit von mehr als 30 Tagen aufweisen und in denen in den letzten 30 Tagen keine Dateien geändert wurden.


Linux
  1. So komprimieren Sie Dateien und Verzeichnisse unter Linux (mit Beispielen)

  2. Alle Dateien/Verzeichnisse außer einer Datei entfernen?

  3. Alle Dateien außer in einem bestimmten Unterverzeichnis löschen mit Suchen?

  4. Wie ersetzt man ein Zeichen durch ein anderes in allen Dateinamen der aktuellen Verzeichnisse?

  5. Alle Dateien und Ordner in /tmp löschen, die älter als einen Tag sind?

So löschen Sie Dateien, die älter als die angegebenen Tage in Linux sind

Wie finde ich unter Linux alle Dateien, die größer als 1 GB sind?

Wie finde ich alle Dateien/Ordner mit 777-Berechtigung in Linux?

Wie finde ich alle Dateien mit der Endung .rb unter Linux?

Bash-Skript zum Löschen von Dateien, die älter als x Tage sind, mit Unterverzeichnissen

Auffinden von Dateien, die älter als x Tage sind, auf einem System mit abgespeckter Busybox