Schnellster Weg, die größte Datei in einem Verzeichnis und Unterverzeichnissen zu finden

Schnellster Weg, die größte Datei in einem Verzeichnis und Unterverzeichnissen zu finden

Ich muss die größte Datei im aktuellen und nachfolgenden Verzeichnis finden. Ich habe versucht

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

weiß aber nicht, ob es in Ordnung ist, wie man die größte Datei sortiert und auswählt.

Antwort1

GNUfind+sort+headLösung (für jede Verzeichnistiefe), vorausgesetzt, Dateipfade enthalten keine Zeilenumbruchzeichen:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- Formatbezeichner, der auf die Dateigröße (in Bytes) verweist
  • %p- Formatbezeichner, der auf den Dateinamen verweist
  • sort -nr- Datensätze numerisch in umgekehrter Reihenfolge sortieren
  • head -1- druckt die OBERSTE Zeile/den ersten Datensatz

Um einefür Menschen lesbarDateigrößenwert – Erweitern Sie die Pipeline mit einem GNU- numfmtBefehl (falls unterstützt):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

Antwort2

Mit zshfür die größte reguläre Datei:

ls -ld -- **/*(.DOL[1])

(natürlich können Sie es ls -ld --durch jeden beliebigen Befehl ersetzen. Wenn Sie GNU lsoder ein kompatibles verwenden, beachten Sie auch die -hOption fürfür Menschen lesbare Größen)

  • .: nurregulärDateien (keine Verzeichnisse, symbolische Links, Geräte, FIFOs …)
  • D: Versteckte einschließen und in versteckte Verzeichnisse absteigen
  • OL: umgekehrte Reihenfolge nach Größe ( LLänge).
  • [1]: nur die erste Übereinstimmung.

Bei Gleichstand erhalten Sie einen beliebigen davon nach dem Zufallsprinzip. Wenn Sie den Erstplatzierten in alphabetischer Reihenfolge haben möchten, fügen Sie ein Extra on( order by name) hinzu, um Gleichstände alphabetisch zu sortieren.

verwandte Informationen