Linux find Befehl und wie er hilft, lesbare Dateigrößen anzuzeigen
20:34, 03.06.2024
Die -printf-Aktion des find-Befehls
Mit dem Befehl find ist es möglich, nach Dateien zu suchen, die auf ihrer Größe, ihrer Berechtigung, ihrem Eigentümer, ihrem Typ, ihrem Namen und vielem mehr basieren. Wenn wir einen anderen Befehl anwenden, nämlich -printf, gibt er die Informationen über bestimmte gesuchte Dateien aus. Um Informationen über die Größe der Datei zu erhalten, sollten Sie solche Spezifizierer wie %s anwenden.
So sollte dieser Befehl aussehen:
$ find /pathtodirectory -type f -printf "%s %p\n"
Mit der Verwendung von %s erhalten Sie die Ausgabe in Bytes. In diesem Fall werden die Zahlen in Bytes und die Titel der Dateien dahinter ausgegeben. Um besser lesbare Informationen zu erhalten, z. B. in Kilobytes, anstatt die Standardoption zu überprüfen, verwenden Sie den folgenden Befehl:
$ find /pathtodirectory -type f -printf "%k KB %p\n"
Durch die Verwendung von %k, geben Sie das Kriterium Kilobytes in Ihrer Suche an. Bevor Sie eines der besprochenen Beispiele verwenden, sollten Sie besser prüfen, ob es für Ihr Betriebssystem geeignet ist, da dieser Befehl auf verschiedenen Unix-Systemen etwas anders funktionieren kann.
Der du-Befehl in Aktion
Eine weitere gute Möglichkeit ist die Verwendung des du Befehls zusammen mit find. Du ist auf allen Linux-Systemen bereits vorinstalliert, so dass man keine zusätzliche Zeit für den Installationsprozess verschwenden muss. Hier ist ein Beispiel dafür, wie dieser Befehl verwendet werden kann:
$ find /pathtodirectory -type f -exec du -h {} +
Versuchen wir nun zu verstehen, welche Befehle hier verwendet wurden. -type f part sucht nach allen Dateien in einem bestimmten Verzeichnis. -exec führt den folgenden Befehl aus, das Plus-Symbol ermöglicht die Suche nach mehreren Dateinamen, und die geschweiften Klammern werden verwendet, um alle benötigten Daten in Form einer Liste anzuzeigen.
Um alle Dateien in Megabyte anzuzeigen, können Sie auch du verwenden. In diesem Fall werden jedoch Dateien, die kleiner als 1 MB sind, so angezeigt, als hätten sie ein Megabyte. Die Befehlszeile sieht dann so aus:
$ find /pathtodirectory -type f -exec du -m {} +
Sie können diesen Befehl verwenden und erhalten nur dann eine zuverlässige Ausgabe, wenn die Dateien 1 MB und größer sind.
Wenn Sie diese Art von Informationen nur über die Verzeichnisse benötigen, können Sie auch denselben Befehl verwenden. So sieht es aus:
$ find /pathtodirectory -maxdepth 1 -type d -exec du --max-depth=1 -h {} +
Wenn Sie diese Zeile verwenden, suchen Sie nach allen Verzeichnissen in dem Pfad, den Sie unmittelbar nach find angeben. Maxdepth sucht nur nach Verzeichnissen im gewählten Ordner. Die letzte Zahl in der Ausgabe zeigt die Gesamtgröße aller Verzeichnisse an.
Dateigrößen mit ls erforschen
Ls ist ein typischer Linux-Befehl, der zum Auflisten von Verzeichnissen/Dateien benötigt wird. Um menschenbezogene Ausgaben der Dateigrößen anzuzeigen, können Sie die nächste Zeile verwenden:
$ find /pathtodirectory -type f -exec ls -lh {} +
In dieser Sequenz ist ls -lh dafür verantwortlich, alle Elemente jeder Datei anzuzeigen, einschließlich der Größenmerkmale. Um diese Zeile zu spezifizieren und die Größenergebnisse in Kilobytes anzuzeigen (sie kann auch für Megabytes und Bytes verwendet werden), verwenden Sie das folgende Beispiel:
$ find /pathtodirectory -type f -exec ls -l --block-size=KB {} +
Wenn Sie mehr strukturierte Informationen über die Größe der Dateien benötigen, können Sie sie in absteigender/aufsteigender Reihenfolge anzeigen lassen. Dies kann mit Hilfe der folgenden Zeile geschehen:
$ find /pathtodirectory -type f -print0 | xargs -0 ls -lS --block-size=KB
Die Ausgabe hier zeigt die Ergebnisse in absteigender Reihenfolge.
Erweiterte Filterung mit grep
Für die erweiterte Filterung wird am häufigsten der Befehl grep verwendet, mit dessen Hilfe Sie das gewünschte Muster auswählen können und alle angezeigten Sequenzen dieses Muster enthalten. Zur Veranschaulichung geben wir den Befehl ein, der nur Dateien mit der Größe MB anzeigt:
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | grep -E '\b[0-9]+M\b'
In dieser Zeile wird \b als spezifische Grenze verwendet, was bedeutet, dass M als Teil der Größe durchsucht wird, aber nicht auf andere Weise. Um die Suchkriterien einzugrenzen, können Sie denselben Befehl verwenden und ein benötigtes Schlüsselwort hinzufügen. Die Zeile sollte wie folgt aussehen:
$ find /pathtodirectory -type f -exec du -h {} + | grep 'keyword'
Sortieren und Verfeinern der Ergebnisse
Wenn Sie die Dateien nach ihrer Größe sortieren möchten, haben Sie mehrere Möglichkeiten. Wir zeigen Ihnen hier einige Beispiele, wie der Befehl sort zu diesem Zweck verwendet werden kann.
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -h -k1
Hier in dieser Zeile, wie in den meisten oben erwähnten, verwenden wir du, um menschenlesbare Größen zu erhalten. Mit dem Merkmal -k1 stellen wir klar, dass die Filterung nach dem Anfangsfeld jeder Zeile erfolgen soll. Standardmäßig ist die Sortierung aufsteigend, aber mit dem Zusatz -r können Sie auch absteigende Ergebnisse erhalten. So sollte es aussehen:
$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -rh -k1
Wir können bei unserer Suche sogar noch weiter gehen und die genaue Dateigröße angeben, die wir benötigen, oder einen bestimmten Bereich über-/unterschreiten. Suchen wir zum Beispiel nach Online-Dateien, die kleiner als 30 MB sind:
$ find /pathtodirectory -maxdepth 1 -type f -size -30M -exec du -h {} +
Um Ergebnisse zu finden, die größer als 30 Megabyte sind, können Sie einfach das Minus in ein Plus umwandeln. Wenn Sie Dateien benötigen, die eine bestimmte Größe haben und nicht größer oder kleiner sind, müssen Sie nur das Pluszeichen vor der Anzahl der Megabytes entfernen.
Eine weitere Möglichkeit, die Sie mit dem Sortierbefehl nutzen können, ist die Anzeige der Ergebnisse in absteigender/aufsteigender Reihenfolge, wie in der folgenden Zeile:
find /pathtodirectory -maxdepth 1 -type f -size +30k -exec du -h {} + | sort -h -k1
Zusammengefasst
In diesem Artikel haben wir versucht, unser praktisches Wissen auf diesem Gebiet weiterzugeben und echte Beispiele dafür zu geben, wie der find-Befehl verwendet werden kann, um Suchergebnisse verständlicher und für den Menschen lesbar darzustellen. Bei der Standardausgabe erhält der Benutzer die Ergebnisse in Form von Bytes, was nicht immer so bequem ist, wie es sein sollte, und die richtige Interpretation erschwert.
Um besser anpassbare Ergebnisse für Ihre Suche zu erhalten, gibt es eine Reihe von guten Optionen wie ls, grep, du und mehr. Mit der Verwendung von benutzerfreundlichen Ausgaben ist es viel einfacher geworden, bessere Erkenntnisse zu gewinnen. Sie haben eine großartige Möglichkeit, alles zu testen, was Sie gerade in der Theorie gelernt haben, und die Implementierung dieser Befehle ist auch für unerfahrene Benutzer kein Problem.