Gesamte Festplattennutzung für einen bestimmten Benutzer

11

Ich möchte die gesamte Festplattennutzung für mich in einem bestimmten Dateisystem sehen. Ich habe den Befehl ausgeführt

du -h ~my_user_name

Hier werden jedoch alle Verzeichnisse aufgelistet, deren Eigentümer ist my_user_name. Ich möchte die Gesamtsumme all dieser Informationen erhalten. Was ist die geeignete Option zum Bestehen? Ich habe es versucht

du -h -c ~my_user_name

aber das hat nicht funktioniert.

Alex
quelle

Antworten:

11

Durch Übergeben -san duwird die Ausgabe nur auf die in der Befehlszeile angegebenen Elemente beschränkt.

du -sh ~
Ignacio Vazquez-Abrams
quelle
9

Du zeigt dir nur die Summen pro Ordner, nicht pro Benutzer.

/home/example_user/Dies kann funktionieren, wenn Sie beispielsweise die Gesamtgröße von möchten und wenn nur dieser example_user Dateien in diesem Ordner hat. Wenn andere Benutzer Dateien enthalten, ergibt dies nicht die Größe aller Dateien, deren Eigentümer Sie sind, sondern die Gesamtgröße aller Dateien in diesem Ordner.

So erhalten Sie die Informationen pro Benutzer:

  1. Wenn Sie Kontingente aktiviert haben, verwenden Sie diese Befehle.
  2. Verwenden Sie find , um alle Verzeichnisse zu durchsuchen, in denen Sie Ihre Dateien zählen möchten. Verwenden Sie die UID, um nur Ihre Dateien auszuwählen, und halten Sie ein assoziatives Array in awk, um die Summen zu zählen.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Beachten Sie, dass hierfür eine GNU-Find-spezifische Erweiterung verwendet wird.

  • Der erste Befehl durchsucht alle Dateien und Verzeichnisse in /path/to/search/.
  • -type fstellt sicher, dass Sie nur Dateien auswählen, andernfalls zählen Sie auch die Größe der Verzeichnisse. (Versuchen Sie, einen leeren Ordner zu erstellen. Wahrscheinlich wird 4 KB Speicherplatz verwendet.)
  • -user username_whos_files_to_count Wählt nur die Ergebnisse eines Benutzers aus
  • -printf "%s\n" druckt die Größe.

Wenn Sie nur den ersten Teil davon ausführen, erhalten Sie eine Liste mit Zahlen. Das sind die Dateigrößen. (Alles andere wird entfernt, dank des Druckbefehls% s wird nur die Größe gedruckt.)

Wir können dann alle diese Zahlen hinzufügen, um eine Zusammenfassung zu erhalten. Im Beispiel geschieht dies mit awk.

Hennes
quelle
+1 guter Punkt, danke! Die Antwort unten war genau das, was ich wollte. Die Unterscheidung zwischen Benutzer und Ordner spielt in meinem Fall keine große Rolle
Alex
Nett. du -schist ein einfacher Befehl, der oft verwendet wird. Es ist viel schwieriger herauszufinden, wem was gehörte, als die Dinge gemischt wurden, obwohl dies als Einzeiler möglich ist. Ich habe es einmal benutzt, aber ich hatte heute Probleme, es zu rekonstruieren.
Hennes
Hat mir sehr geholfen, perfekte Erklärung
Babin Lonston
2

Ein guter Befehl ist, um die gesamte Verwendung durch einen bestimmten Benutzer zu finden:

find -user $USER -type f -exec du -chs {} +

Sie können je nach Bedarf weitere Änderungen vornehmen. Beispielsweise möchte ich die Verwendung häufig nach Ordnern zusammenfassen. Folgendes funktioniert gut:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Dadurch werden nur Verzeichnisse auf einer Ebene gefunden, die vom Benutzer begrenzt werden, das übergeordnete Verzeichnis ausgeschlossen und am Ende jedes Verzeichnis und eine Zusammenfassung gedruckt.

asherkhb
quelle