Um die Größe einer Gruppe von Dateien zu finden

Um die Größe einer Gruppe von Dateien zu finden

Ich habe versucht, die Gesamtgröße aller Dateien herauszufinden, die einem bestimmten Benutzer gehören.

Beim Versuch erhalte ich beim Ausführen verschiedener Befehle unterschiedliche Größen.

Welcher Befehl ist der richtige, um die Gesamtgröße aller Dateien herauszufinden, die dem jeweiligen Benutzer gehören?

$ find . -type f -user silviya|ls -lh|head -1 
total 68K
$ find . -type f -user agalya|wc -c
284
$ find . -type f -user agalya|du -sk
120 .

Was ist der Grund für diese Abweichung?

Antwort1

In:

find . -type f -user silviya|ls -lh|head -1 

Sie leiten die Ausgabe von findan weiter ls, lslesen aber nicht die Eingabe. Es verwendet die Liste der aufzulistenden Dateien als Argumente. In Ermangelung von Argumenten wie hier listet es die nicht versteckten Dateien im aktuellen Verzeichnis auf. Hier erhalten Sie also die Festplattennutzung aller nicht versteckten Dateien (jeglichen Typs) im aktuellen Verzeichnis (wobei die Größe einer bestimmten Datei für jeden ihrer Hardlinks gezählt wird).

In:

find . -type f -user agalya|wc -c

Sie zählen die Anzahl der Bytes in der Ausgabe von find, also die Größe der Dateipfade (und Zeilenumbruchtrennzeichen), nicht deren Festplattennutzung oder Dateigröße.

In:

find . -type f -user agalya|du -sk

Nimmt wie die Dateiliste als Argumente, nicht aus ihrer Eingabe. Hier erhalten Sie lsalso dudie Festplattennutzung aller Dateien und Verzeichnisse im aktuellen Verzeichnis (rekursiv).

Um die Festplattennutzung aller regulären Dateien im Besitz von zu ermitteln agalya, gehen Sie mit den GNU-Dienstprogrammen wie folgt vor:

find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1

--files0-fromweist du(nur GNU du) an, die Dateiliste von der Standardeingabe zu übernehmen ( -hier dargestellt). -cGibt die kumulative Größe an (beachten Sie, dass Hardlinks derselben Datei nur einmal gezählt werden).

So erhalten Sie die DateiersichtlichGröße im Gegensatz zur Festplattennutzung, fügen Sie die --apparent-sizeOption hinzu du(auch hier GNU-spezifisch). Fügen Sie die -lOption hinzu (ebenfalls GNU-spezifisch), Hardlinks mehrmals zu zählen.

Antwort2

Befehl Nr. 1 gibt die Gesamtgröße der „nützlichen“ Bytes der Dateien und ihres Inhalts an.

Befehl Nr. 3 gibt den belegten Speicherplatz an, der zum Speichern der Dateien verwendet wird. Festplatten sind in Blöcke (oft 4 kB lang) unterteilt, die nicht von mehreren Dateien gemeinsam genutzt werden können. Eine Datei beliebiger Größe zwischen 1 und 4096 B belegt also beispielsweise 4 kB Speicherplatz. [Dies ist vereinfacht. Bei einigen FS-Typen wie ext können sehr kleine Dateien in der Dateitabelle selbst gespeichert werden, ohne dass Datenblöcke verwendet werden.]

Befehl Nr. 2 zählt nur die Anzahl der Zeichen desDateinamen. (Größe der Ausgabe des findBefehls.)

verwandte Informationen