Wir haben eine Reihe von Verzeichnissen, die Lucene-Indizes enthalten. Jeder Index ist eine Mischung aus verschiedenen Dateitypen (differenziert nach Erweiterung), zB:
0/index/_2z6.frq
0/index/_2z6.fnm
..
1/index/_1sq.frq
1/index/_1sq.fnm
..
(es geht um 10 verschiedene Erweiterungen)
Wir möchten eine Gesamtsumme nach Dateierweiterung erhalten, zB:
.frq 21234
.fnm 34757
..
Ich habe verschiedene Kombinationen von du / awk / xargs ausprobiert, finde es aber schwierig, genau das zu tun.
filesystems
shell
disk-space-utilization
Scheunenwanze
quelle
quelle
Antworten:
Für jede gegebene Erweiterung können Sie eine verwenden
um die gesamte Dateigröße für diesen Typ zu erhalten.
Und nach einigem Nachdenken
Welches die Größe in Bytes jedes gefundenen Dateityps ausgibt.
quelle
-iname
Möchte möglicherweise verwenden , um die Groß- und Kleinschreibung der Dateierweiterung zu ignorieren.Mit bash version4, müssen Sie nur auf Anruf
find
,ls
undawk
nicht notwendig:quelle
read name size
zuread size name
und-printf "%f\t%s\n"
nach-printf "%s\t%f\n"
sollte das Problem beheben.if [ "$name" == "$ext" ]; then ext="*no_extension*"; fi
danach hinzu,ext=${name##*.}
wenn Sie dies verhindern müssen. Dadurch werden alle Dateien ohne Dateierweiterung in eine*no_extension*
Gruppe eingeteilt (ich verwende,*no_extension*
weil der*
Dateiname kein gültiges Zeichen enthält)Jede zweite Spalte, aufgeteilt nach
.
und letzter Teil (Erweiterung), gespeichert im Array.dann hast du jede erweiterung gesamtgröße in bytes.
quelle
Erweiterung von Iains Skript um eine schnellere Version für die Arbeit mit einer großen Anzahl von Dateien.
quelle
Das ist die Lösung:
Lösung ursprünglich in diesem Beitrag gepostet: Holen Sie sich alle Erweiterungen und die jeweilige Anzahl von Dateien in ein Verzeichnis
quelle
Ich löste mit diesen beiden Befehlen:
quelle
Meine Version der Antwort auf die Frage:
quelle
Try Crab ( http://etia.co.uk/ ) - ein Befehlszeilenprogramm, mit dem Sie das Dateisystem mit SQL abfragen können.
quelle