Dateigröße von Verzeichnis summieren

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 22.06.2020 21:07:31

Hallo,

nach langer Zeit habe ich mit einem Problem wieder hier her gefunden.

Ich möchte per bash script in regelmäßigen Abständen die Filesize eines Ordners summieren und ausgeben lassen. Ich bekomme den Command aber irgendwie nicht korrekt zusammen.

Mein Ordner hat exakt: 789.187.583.427 Bytes

Code: Alles auswählen

ls -lnH --block-size=1MB /home/folder | grep -v '^d' | awk '{total += $5} END {print total, "Total /folder_size"}' >> $LOG_SIZE_ALL
Bringt mir folgenden Output "789204 Total /folder-size" - Mir unerklärlich selbst mit Aufrunden

Dann habe ich folgendes probiert in sämtlichen Variationen

Code: Alles auswählen

ls -lnH --block-size=1000MB /home/folder | grep -v '^d' | awk '{total += $5} END {print total, "Total /folder_size"}' >> $LOG_SIZE_ALL
Bringt mir folgenden Output "803 Total /folder-size" - Mir völlig unerklärlich

Code: Alles auswählen

ls -lnH --block-size=1000GB /home/folder | grep -v '^d' | awk '{total += $5} END {print total, "Total /folder_size"}' >> $LOG_SIZE_ALL
Bringt mir folgenden Output "32000 Total /folder-size" - Mir völlig unerklärlich

Ich habe noch ungefähr 30 weitere Kombinationen durchprobiert, komme aber einfach nicht zum Ziel. Das einzige das klappt ist die Ausgabe in Byte wie folgt:

Code: Alles auswählen

ls -nR /home/folder | grep -v '^d' | awk '{total += $5} END {print total, "Total /folder_size"}' >> $LOG_SIZE_ALL
Bringt mir folgenden Output "789187583427 /folder-size" - Aber eben nur in Byte, ich hätte gern GB.

Meine Rechnung zum korrekten Ergebnis wäre daher:
789187583427 / 1000000000 = 789,187583427 - Da wäre mir ein einfaches schneiden auf 2 Nachkommastellen sehr recht. Wunschergebnis wäre daher: 789,18 GB /folder-size

Jemand eine Idee wo mein Fehler liegt ?

Vielen Dank vorab!

Lg
rodeoric

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Dateigröße von Verzeichnis summieren

Beitrag von cronoik » 22.06.2020 21:35:26

Kurze Frage bevor ich mir das spaeter mal ansehen kann, warum nimmst du nicht

Code: Alles auswählen

du -sh /home/folder
?
Hilf mit unser Wiki zu verbessern!

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 22.06.2020 21:41:40

cronoik hat geschrieben: ↑ zum Beitrag ↑
22.06.2020 21:35:26
Kurze Frage bevor ich mir das spaeter mal ansehen kann, warum nimmst du nicht

Code: Alles auswählen

du -sh /home/folder
?
Danke für deine Rückmeldung. Das habe ich auch schon probiert in einer meiner Varianten. Das liefert mir folgenden Output.
735G /home/folder

Ich habe keine Ahnung, da wird mit der falschen Größe gerechnet und ich würde gern, wenn die Rechnung stimmt, gern einen Output mit Text haben.
Bspw. sowas hier: 789G befinden sich in /home/folder

Lg
rodeoric

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Dateigröße von Verzeichnis summieren

Beitrag von cronoik » 22.06.2020 22:01:18

Ah, du hast hier glaube ich einen Annahmefehler. Man rechnet ueblicherweise mit 1024 und nicht mit 1000 als Umrechnungsfaktor aufgrund der Zweierpotenz. Wenn du gern 1000 nehmen willst:

Code: Alles auswählen

du -s --si /home/folder
Hilf mit unser Wiki zu verbessern!

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 22.06.2020 22:08:38

cronoik hat geschrieben: ↑ zum Beitrag ↑
22.06.2020 22:01:18
Ah, du hast hier glaube ich einen Annahmefehler. Man rechnet ueblicherweise mit 1024 und nicht mit 1000 als Umrechnungsfaktor. Wenn du gern 1000 nehmen willst:

Code: Alles auswählen

du -s --si /home/folder
Servus,

habe ich gerade ausprobiert.

Das gibt mir als Output "790G /home/folder" - Gefällt mir

Vielleicht hast auch noch eine Idee für nachfolgende Fragen ?

1. Lässt sich das auch noch auf 789,18G ausgeben
2. Eventuell statt dem "/home/folder" einen benutzerdefinierten Text eingeben ? Bspw. xxxG befinden sich in folgendem Ordner
3. Wie würde der Command für MB als Ausgabe lauten
4. Was bedeutet "-s --si" für mich zum Verständnis ?

Aber ich bin schon einen großen Schritt weiter Dank Dir :D da hätte ich mir die letzten 2,5 Stunden rumbrobieren sparen können :hail:

Lg
rodeoric

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Dateigröße von Verzeichnis summieren

Beitrag von MSfree » 22.06.2020 22:23:36

rodeoric hat geschrieben: ↑ zum Beitrag ↑
22.06.2020 22:08:38
3. Wie würde der Command für MB als Ausgabe lauten
du -s --block-size=1000000
4. Was bedeutet "-s --si" für mich zum Verständnis ?

Code: Alles auswählen

man du
und

Code: Alles auswählen

du --help
werden es dir erklären ;)

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateigröße von Verzeichnis summieren

Beitrag von Meillo » 23.06.2020 00:17:14

`-m' liefert dir den Wert in MB.

Die Ausgabe textuell umformen kannst du mit sed(1). Wenn du den Zahlwert auch noch beliebig runden willst, kannst du awk(1) verwenden.
Use ed once in a while!

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 23.06.2020 06:53:32

Hallo,

an beide vielen Dank für eure Rückmeldung.

@Meillo, könntest Du mal ein Beispiel machen mit sed und awk ?

Das andere schaue ich mir an. Vielen Danke schon mal <3

Lg
rodeoric

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Dateigröße von Verzeichnis summieren

Beitrag von MSfree » 23.06.2020 08:00:04

Meillo hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 00:17:14
`-m' liefert dir den Wert in MB.
Nicht ganz, -m liefert den Wert in MiB und entspricht --block-size=‭1048576:wink:
könntest Du mal ein Beispiel machen mit sed und awk ?

Code: Alles auswählen

du -s --blocksize=1000 | awk '{printf "%.2f",$1/1000}'

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 23.06.2020 13:02:36

MSfree hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 08:00:04
Meillo hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 00:17:14
`-m' liefert dir den Wert in MB.
Nicht ganz, -m liefert den Wert in MiB und entspricht --block-size=‭1048576:wink:
könntest Du mal ein Beispiel machen mit sed und awk ?

Code: Alles auswählen

du -s --blocksize=1000 | awk '{printf "%.2f",$1/1000}'
Vielen Dank,

probiere ich später aus.

:THX: :THX: :THX:

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 23.06.2020 18:40:56

rodeoric hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 13:02:36
MSfree hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 08:00:04
Meillo hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 00:17:14
`-m' liefert dir den Wert in MB.
Nicht ganz, -m liefert den Wert in MiB und entspricht --block-size=‭1048576:wink:
könntest Du mal ein Beispiel machen mit sed und awk ?

Code: Alles auswählen

du -s --blocksize=1000 | awk '{printf "%.2f",$1/1000}'
Vielen Dank,

probiere ich später aus.

:THX: :THX: :THX:
du -s --blocksize=1000 /home/folder | awk '{printf "%.2f",$1/1000}'
Fehler korrigiert --block-size=1000

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{printf "%.2f",$1/1000}' >> $LOG_ALL
Nun habe ich hier noch 2 Probleme, zum einen fehlt mir mein Wunschtext hinter der Ausgabe und ganz seltsam, wenn ich den Befehl mehrmals untereinander schreibe, gibt er mir den Output alles in einer Zeile ? :roll:

Jemand eine Idee warum ?

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Dateigröße von Verzeichnis summieren

Beitrag von MSfree » 23.06.2020 19:12:31

rodeoric hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 18:40:56
Nun habe ich hier noch 2 Probleme, zum einen fehlt mir mein Wunschtext hinter der Ausgabe und ganz seltsam, wenn ich den Befehl mehrmals untereinander schreibe, gibt er mir den Output alles in einer Zeile ? :roll:
Einen Zeilevorschub kannst du in dem Formatstring von awk unterbringen, in dem du vor das endende doppelte Gänsefüßchen \n schreibst.

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{printf "%.2f mir fehlt der Wunschtext\n",$1/1000}'

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 23.06.2020 19:29:54

MSfree hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 19:12:31
rodeoric hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 18:40:56
Nun habe ich hier noch 2 Probleme, zum einen fehlt mir mein Wunschtext hinter der Ausgabe und ganz seltsam, wenn ich den Befehl mehrmals untereinander schreibe, gibt er mir den Output alles in einer Zeile ? :roll:
Einen Zeilevorschub kannst du in dem Formatstring von awk unterbringen, in dem du vor das endende doppelte Gänsefüßchen \n schreibst.

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{printf "%.2f mir fehlt der Wunschtext\n",$1/1000}'
Awesome, das war des Rätsels Lösung :D

Ist es auch möglich den Command anzupassen das ein Output wie folgt rauskommt ?

Hier befinden sich xxx GB an Dateien ?

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{In diesem Verzeichnis befinden sich printf "%.2f GB\n",$1/1000}' >> $LOG_ALL
Das klappt irgendwie nicht :D da kommt Syntax Fehler, hast Du dafür auch noch eine Lösung an der Hand ?

:hail:

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Dateigröße von Verzeichnis summieren

Beitrag von MSfree » 23.06.2020 19:37:42

rodeoric hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 19:29:54

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{In diesem Verzeichnis befinden sich printf "%.2f GB\n",$1/1000}' >> $LOG_ALL
Das klappt irgendwie nicht :D
Kein Wunder:

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{printf "In diesem Verzeichnis befinden sich %.2f GB\n",$1/1000}' >> $LOG_ALL
Für awk gibt es übrigens eine gute Anleitung, die du mit man awk auf der Kommandozeile aufrufen kannst. man steht hier für Manual=Anleitung und das Zweite Wort für den Befehl, für den du Hilfe brauchst.

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 23.06.2020 19:53:24

MSfree hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 19:37:42
rodeoric hat geschrieben: ↑ zum Beitrag ↑
23.06.2020 19:29:54

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{In diesem Verzeichnis befinden sich printf "%.2f GB\n",$1/1000}' >> $LOG_ALL
Das klappt irgendwie nicht :D
Kein Wunder:

Code: Alles auswählen

du -s --block-size=1000000 /home/folder | awk '{printf "In diesem Verzeichnis befinden sich %.2f GB\n",$1/1000}' >> $LOG_ALL
Für awk gibt es übrigens eine gute Anleitung, die du mit man awk auf der Kommandozeile aufrufen kannst. man steht hier für Manual=Anleitung und das Zweite Wort für den Befehl, für den du Hilfe brauchst.
Ai okay :D

Ich probiere :D

Vielen Danke :THX: :THX: :THX:

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 26.06.2020 11:36:53

Könnte mir hier nochmal jemand helfen ?

Ich versuche alle Dateien im Verzeichnis zu zählen und ausgeben zu lassen.

Das klappt mit nachfolgendem Command soweit schon mal gut.

Code: Alles auswählen

find /home/folder -type f | wc -l | ts '[%d.%m.%Y %H:%M:%S]' >> $LOG_COUNT
[26.06.2020 08:47:26] 9
Ich hätte die Ausgabe ganz gern wie folgt: In diesem Verzeichnis befinden sich heute 9 Dateien.

Wie könnte ich das umsetzen?

:hail:

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateigröße von Verzeichnis summieren

Beitrag von Meillo » 26.06.2020 11:47:39

`ts' ist ja ein netter Befehl. Wieder was gelernt! :THX:


Ersetze den ts-Befehl durch:

Code: Alles auswählen

sed 's/.*/In diesem Verzeichnis befinden sich heute & Dateien/'
Use ed once in a while!

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Dateigröße von Verzeichnis summieren

Beitrag von tobo » 26.06.2020 12:25:20

Oder als Alternative:

Code: Alles auswählen

printf "In diesem Verzeichnis befinden sich heute %s Dateien\n" `find /home/folder -type f | wc -l`

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 26.06.2020 13:11:31

@tobo @Meillo

Freut mich, eure beiden Commands funktionieren tadelllos.

Für die Nachwelt, hier mal noch in Kombination mit Zeitstempel.

Code: Alles auswählen

find /home/folder -type f | wc -l | sed 's/.*/In diesem Verzeichnis befinden sich & Dateien/' | ts '[%d.%m.%Y %H:%M:%S]' >> $LOG_ALL
[26.06.2020 13:09:08] In diesem Verzeichnis befinden sich 375 Dateien
Ein Traum :)

:THX: :THX: :THX:

willy4711

Re: Dateigröße von Verzeichnis summieren

Beitrag von willy4711 » 26.06.2020 13:52:40

Just for Fun als Desktop-Benachrichtigung:
Als Skript in den Autostart bzw. einen Starter bauen um das Skript zu starten.

Code: Alles auswählen

#!/bin/bash
while
  true
do
Message=$(du -sh ~/Downloads|cut -c 1-3)
notify-send "Ordnergrösse Downloads" -i "/home/willy/.icons/Willy-Moka/64x64@2x/emblems/emblem-important.png" -t 25000 $Message
 sleep 20

done
Erklärung:
"Ordnergrösse Downloads" ---> Beliebiger Text
-i "/home/willy/.icons/Willy-Moka/64x64@2x/emblems/emblem-important.png" ---> Beliebieges Icon
-t 25000 Anzeigedauer [ms](muss beim Icon mit angegeben werden)
$Message ---> Ergebnis vom Befehl
sleep 20 ----> Intervall, nach dem das Skript erneut startet.
Sieht dann so aus:
2693

EDIT:

Solltest du zufällig Xfce haben, gäbe es eine Variante für das Panel, jedoch machen sich hier Texte nicht allzu gut.

rodeoric
Beiträge: 30
Registriert: 23.12.2019 15:02:54

Re: Dateigröße von Verzeichnis summieren

Beitrag von rodeoric » 26.06.2020 15:29:42

willy4711 hat geschrieben: ↑ zum Beitrag ↑
26.06.2020 13:52:40
Just for Fun als Desktop-Benachrichtigung:
Als Skript in den Autostart bzw. einen Starter bauen um das Skript zu starten.

Code: Alles auswählen

#!/bin/bash
while
  true
do
Message=$(du -sh ~/Downloads|cut -c 1-3)
notify-send "Ordnergrösse Downloads" -i "/home/willy/.icons/Willy-Moka/64x64@2x/emblems/emblem-important.png" -t 25000 $Message
 sleep 20

done
Erklärung:
"Ordnergrösse Downloads" ---> Beliebiger Text
-i "/home/willy/.icons/Willy-Moka/64x64@2x/emblems/emblem-important.png" ---> Beliebieges Icon
-t 25000 Anzeigedauer [ms](muss beim Icon mit angegeben werden)
$Message ---> Ergebnis vom Befehl
sleep 20 ----> Intervall, nach dem das Skript erneut startet.
Sieht dann so aus:
2693

EDIT:

Solltest du zufällig Xfce haben, gäbe es eine Variante für das Panel, jedoch machen sich hier Texte nicht allzu gut.
Danke Dir für die Ausführung, die Scripte laufen bei mir auf einem Server und laden mir die Logs dann auf den Webspace hoch. Das ist alles automatisiert bei mir. Ich verschönere aktuell nur die Log Dateien mit so Kleinigkeiten.

Aber trotzdem vielen Dank für den Beitrag.

:THX: :THX: :THX:

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Dateigröße von Verzeichnis summieren

Beitrag von JTH » 27.06.2020 13:31:54

Noch als Alternativvorschlag, angeregt von tobo:

Auf sed und tc (kannte ich auch noch nicht, das kann mal hilfreich sein :THX: ) kann man verzichten, besonders wenn man von anderswo mit printf vertrauter ist. Die Bash kann Datumsformatierung (inzwischen) von Haus aus:

Code: Alles auswählen

printf "%(%d.%m.%Y %T)T In diesem Verzeichnis befinden sich %d Dateien\n" -1 "$(find . -type f | wc -l)" >> $SOMEWHERE
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten