ubuntuusers.de

xargs und Leerzeichen

Status: Ungelöst | Ubuntu-Version: Xubuntu 24.04 (Noble Numbat)
Antworten |

glaskugel

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3602

Ich habe ein kleines Problem, wenn Leerzeichen im Dateinamen vorkommen, das ist aber zu 99,99% nicht der Fall.

dupfiles=$(fdupes -r "$SICHERUNGSQUELLVERZEICHNIS")

dupsize=$(echo "$dupfiles" | xargs -d \\n du -c -h -L | tail -1 | cut -f 1)

Ohne Leerzeichen funktioniert das. Mich würde interessieren, wie man die Leerzeichen richtig quotet.

fdupes -r -m "$SICHERUNGSQUELLVERZEICHNIS"

Das ist sowieso die bessere Lösung.

Es geht nur darum, abschätzen zu können, ob da eine wesentliche Anzahl / Größe an Duplikaten gesichert wird.

zappel

Anmeldungsdatum:
15. Januar 2024

Beiträge: 6

Mit "sed".

1
sed -e 's/ /\\\\ /g'

oder als hexadezimale notation (utf8)

1
sed -e 's/\x20/\x5c\x5c\x20/g'

also so:

1
dupsize=$(echo "$dupfiles" | sed -e 's/ /\\\\ /g' | xargs -d \\n du -c -h -L | tail -1 | cut -f 1)

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13117

Ideal wäre eine Ausgabe mit 0 Byte als Trenner von fdupes, aber diese Option gibt es anscheinend nicht. Leerzeichen sind bei xargs eigentlich kein Problem:

1
2
3
4
5
6
7
8
9
$ printf 'a\nb c\nd\n' > input
$ cat input
a
b c
d
$ xargs -rd \\n printf '<%s>\n' < input
<a>
<b c>
<d>

Und Du quotest auch richtig. Wo geht es denn genau schief?

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3602

Wo geht es denn genau schief?

Kann ich nicht mehr sagen bzw. probieren. Ich habe ein script, dass alles "böse" entfernt, also keine Leerzeichen, etc. alles zu US_ASCII. Das habe ich einfach darüber laufen lassen.

Ideal wäre eine Ausgabe mit 0 Byte als Trenner von fdupes

Ich habe mal in dieser Richtung die Blöcke nach Größe sortiert:

dupfiles=$(jdupes -rSM "$SICHERUNGSQUELLVERZEICHNIS") # -M erhöht die Zeilen, geht nur um Duplikate ja/nein
dupfiles_sort=$(echo "$dupfiles" | gawk -v RS= -v ORS='\n\n\0' 1 | sort -znr | tr -d '\0')
Antworten |