[gelöst] Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
DerChris
Beiträge: 369
Registriert: 16.03.2009 16:45:12
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von DerChris » 27.04.2022 12:28:04

Moin zusammen,

ich benutze den Dateimanager Debiannnn, welcher den Inhalt der Auswahl (Ordner, Dateien) als Textdatei zwischenspeichert.
Ich nutze folgenden Befehl, um mir bei Bedarf die Gesamtgröße aller Dateien in der Auswahl anzeigen zu lassen:

Code: Alles auswählen

du -csh `cat ~/.config/nnn/.selection` | tail -1 | cut -f 1
Das klappt auch wie gewünscht, bis sich in die Liste (.selection) ein Eintrag mit Leerzeichen verirrt. Ich hab schon einige Ansätze probiert, bekomme es jedoch nicht hin und hoffe jetzt hier auf Hilfe. :(
Shell ist übrigens die Debianzsh
Zuletzt geändert von DerChris am 27.04.2022 14:05:03, insgesamt 1-mal geändert.
bookworm & sway

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

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von Meillo » 27.04.2022 12:39:51

Code: Alles auswählen

cat ~/.config/nnn/.selection | xargs -d\\n du -csh | tail -1 | cut -f 1
Use ed once in a while!

DerChris
Beiträge: 369
Registriert: 16.03.2009 16:45:12
Lizenz eigener Beiträge: MIT Lizenz

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von DerChris » 27.04.2022 12:53:56

Danke für die Antwort und den Vorschlag!

Leider klappt das nicht ganz. Die Gesamtgröße wird nicht weiter summiert, sobald ein Eintrag mit Leerzeichen umfasst ist.
bookworm & sway

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

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von Meillo » 27.04.2022 13:06:16

DerChris hat geschrieben: ↑ zum Beitrag ↑
27.04.2022 12:53:56
Danke für die Antwort und den Vorschlag!

Leider klappt das nicht ganz. Die Gesamtgröße wird nicht weiter summiert, sobald ein Eintrag mit Leerzeichen umfasst ist.
Bei mir funktioniert es:

Code: Alles auswählen

:-Q cat dirlist 
aa bb
ccc
ddd
ee ff

:-Q du -sch `cat dirlist`
du: cannot access `aa': No such file or directory
du: cannot access `bb': No such file or directory
928K    ccc
936K    ddd
du: cannot access `ee': No such file or directory
du: cannot access `ff': No such file or directory
1.9M    total

:-Q cat dirlist | xargs -d\\n du -sch
1.6M    aa bb
928K    ccc
936K    ddd
560K    ee ff
4.0M    total
... vielleicht hast du dich vertippt oder die zsh graetscht noch irgendwo rein.


Edit:
Auch wenn die Leerzeichen am Anfang oder Ende stehen geht es:

Code: Alles auswählen

:-Q cp ccc ' gg '                    

:-Q echo ' gg ' >>dirlist

:-Q cat dirlist | xargs -d\\n du -sch
1.6M    aa bb
928K    ccc
936K    ddd
560K    ee ff
928K     gg 
4.9M    total
Use ed once in a while!

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von smutbert » 27.04.2022 13:39:21

Für die Summe dürfte man du nicht für jede Zeile einmal ausführen, sondern müsste einem einzigen Aufruf von du die Liste der Dateien und Verzeichnisse übergeben.

Eigentlich sollte man meinen, dass das mit den ersten drei Teilen des regex-Kurses kein Problem ist, aber spontan komme ich auch nicht so recht weiter. Meine erste Idee wäre " an Zeilenanfang und -ende einzufügen

Code: Alles auswählen

sed 's/^/"/;s/$/"/' ~/.config/nnn/.selection
Soweit sähe das Ergebnis im Terminal noch richtig aus, aber

Code: Alles auswählen

du -chs $(sed 's/^/"/;s/$/"/' liste.txt)
funktioniert wieder nicht - es wird trotzdem beim Leerzeichen getrennt.

Meillo, bitte hilf' uns
(oder mach schnell weiter mit dem regex-Kurs ☺)

Edit:
Ich habe einen ziemlich Blödsinn zusammengeschrieben, aber ich lass ihn trotzdem stehen. Meillos Vorschlag funktioniert bei mir doch auch – ich habe das mit xargs falsch verstanden (und selbst falsch ausprobiert).

DerChris
Beiträge: 369
Registriert: 16.03.2009 16:45:12
Lizenz eigener Beiträge: MIT Lizenz

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von DerChris » 27.04.2022 13:40:23

Ich habs, nicht die zsh war schuld (hab es auch in der bash getestet), sondern die Selektion von nnn brauchte noch eine Anpassung.
So geht es jetzt: Wenn die Infos detaillierter sein dürfen, kann man den Teil mit tail und cut weglassen.

Code: Alles auswählen

cat ~/.config/nnn/.selection | tr '\0' '\n' | xargs -d\\n du -csh | tail -1 | cut -f 1
Vielen Dank für deine Hilfe Meillo, ohne den Schubs in die richtige Richtung wäre ich hier wohl verzweifelt. :)

Edit:
Besten Dank natürlich auch an smutbert für die Rückmeldung. Dann setze ich das mal auf gelöst. :THX:
Zuletzt geändert von DerChris am 27.04.2022 13:49:30, insgesamt 1-mal geändert.
bookworm & sway

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

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von Meillo » 27.04.2022 13:47:46

DerChris hat geschrieben: ↑ zum Beitrag ↑
27.04.2022 13:40:23
Ich habs, nicht die zsh war schuld (hab es auch in der bash getestet), sondern die Selektion von nnn brauchte noch eine Anpassung.
So geht es jetzt: Wenn die Infos detaillierter sein dürfen, kann man den Teil mit tail und cut weglassen.

Code: Alles auswählen

cat ~/.config/nnn/.selection | tr '\0' '\n' | xargs -d\\n du -csh | tail -1 | cut -f 1
Ach, dann ist ~/.config/nnn/.selection gar keine Textdatei, sondern was binaeres. *igittigitt* ;-)

(Das waere meine naechste Frage gewesen: Poste doch mal einen Ausschnitt aus der Datei.)

Das tr kannst du dir sparen. Du kannst xargs auch einfach sagen, dass es Null-Bytes als Delimiter nehmen soll:

Code: Alles auswählen

xargs -d\\0
(ungetestet, sollte aber so gehen)
Use ed once in a while!

DerChris
Beiträge: 369
Registriert: 16.03.2009 16:45:12
Lizenz eigener Beiträge: MIT Lizenz

Re: Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von DerChris » 27.04.2022 14:02:45

Meillo hat geschrieben: ↑ zum Beitrag ↑
27.04.2022 13:47:46

Code: Alles auswählen

xargs -d\\0
(ungetestet, sollte aber so gehen)
Jo, das klappt. :THX:

Code: Alles auswählen

cat ~/.config/nnn/.selection | xargs -d\\0 du -csh | tail -1 | cut -f 1
Meillo hat geschrieben: ↑ zum Beitrag ↑
27.04.2022 13:47:46
(Das waere meine naechste Frage gewesen: Poste doch mal einen Ausschnitt aus der Datei.)
Schaut so aus:

Code: Alles auswählen

/home/bla/testfolder^@/home/bla/test folder 2^@/home/bla/testdatei^@/home/bla/Test/testdatei 2
bookworm & sway

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

Re: [gelöst] Gesamtgröße mit du aus Liste, Problem mit Leerzeichen

Beitrag von Meillo » 27.04.2022 14:47:59

:THX:
Use ed once in a while!

Antworten