ubuntuusers.de

doppelte Dateien finden

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

sven-tek Team-Icon

Avatar von sven-tek

Anmeldungsdatum:
12. März 2005

Beiträge: 803

Hallo Community!

Ich suche eine Möglichkeit doppelte Dateien/Ordner auf meiner Festplatte zu finden damit ich sie löschen kann.
Unter Windows habe ich dazu das Tool CloneSpy benutzt aber noch nichts passendes gefunden unter Linux.

Hat jemand nen Tipp?

Gruss, Sven

bugfix

Avatar von bugfix

Anmeldungsdatum:
27. Oktober 2005

Beiträge: 455

Wohnort: Weilerswist

Wie wärs mit

Kleansweep

sven-tek Team-Icon

(Themenstarter)
Avatar von sven-tek

Anmeldungsdatum:
12. März 2005

Beiträge: 803

Habe da ein gutes Skript gefunden um dupes zu finden:

#!/bin/bash
# Für jede Datei die Prüfsumme berechnen und in einer temporären
# Datei speichern
find -exec md5sum {} \; > /tmp/sum.unsorted
# Die Prüfsummen sortieren
sort < /tmp/sum.unsorted > /tmp/sum.sorted
# Alle Doppelten Summen finden und speichern
cut -f 1 -d " " /tmp/sum.sorted | uniq -d > /tmp/sum.dupe
# Die Dateinamen zu den Doppelten Summen finden und ausgeben
grep -F -f /tmp/sum.dupe /tmp/sum.sorted

Dieses bash-script sollte man als /usr/local/bin/dupefinder speichern. Es sucht in dem Ordner, und allen unterordnern, in dem man es startet nach Duplikaten. Das dauert eine Weile bei vielen/grossen Dateien weil es zunächst md5sum's erstellt von allen Dateien und diese dann sortiert.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Der find-Befehl erzeugt jedesmal eine Fehlermeldung, wenn er ein Verzeichnis findet.
Schränkt man die Suche auf den Typ 'reguläre Datei (file)' ein (-type f), so verschwinden diese:

find -type f -exec md5sum {} \; > /tmp/sum.unsorted

Die Sortierung würde ich auch gleich in einem Aufwasch erledigen:

find -type f -exec md5sum {} \; | sort > /tmp/sum.sorted 

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Hallo!

Das Skript funktioniert gut, solange man die doppelten Dateien nur angezeigt bekommen will. Beim Sortieren bevorzuge ich eine separate Zeile, weil die Prüfsummenberechnung sehr lange dauern kann und ich mit einem " tail -f /tmp/sum.unsorted " sehen kann, ob sich etwas tut und wie weit das Skript ist.

Bei mir sieht das Skript also so aus:

#!/bin/bash
# Für jede Datei die Prüfsumme berechnen und in einer temporären
# Datei speichern
#suchmuster="/home/delcour -iname *.jpg"
#suchmuster="/home/delcour"
#suchmuster="/mnt/hda11/med/musik"

suchmuster="/mnt/hda11/fotos -iname *.j*g"

# Alle Dateien von Suchmuster mit Pruefsumme in doppel.sum.unsortiert schreiben
find $pfad -type f -exec md5sum {} \; > /tmp/doppel.sum.unsortiert

#Sortieren
sort < /tmp/doppel.sum.unsortiert > /tmp/doppel.sum.sortiert

# Alle Doppelten Summen finden und speichern
cut -f 1 -d " " /tmp/doppel.sum.sortiert | uniq -d > /tmp/doppel.sum.gefunden

# Die Dateinamen zu den Doppelten Summen finden und ausgeben
grep -F -f /tmp/doppel.sum.gefunden /tmp/doppel.sum.sortiert  > /tmp/doppel.loeschliste

#Nur die Dateinamen ausgeben
cut -b 34-254 /tmp/doppel.loeschliste > /tmp/loeschliste
beep
beep

Aus der Datei loeschliste erzeuge ich mit OpenOffice Calc Shellbefehle (Jeweils erster Eintrag bleibt erhalten. alle anderen Einträge werden in ein tar-Archiv gesichert und dann gelöscht. tar "tar -uf archivname -T loeschliste" verweigert diese Aufgabe mit der Ausrede "tar: /mnt/hda11/fotos/sommer-2003/DCIM/00921786.JPG : Kann stat nicht ausführen.: Datei oder Verzeichnis nicht gefunden ", und zwar auch dann, wenn der Ausdruck aus Pfad und Dateiname in einfachen und doppelten Hochkommas übergeben wird).

Zum automatisierten Löschen eignet sich das aber nicht, denn

1. enthält die Datei "loeschliste" auch den nicht zu löschenden Eintrag. uniq hilft hier nicht, weil die Dateinamen abweichen können.
2. machen mir die Leerzeichen in den Dateinamen Probleme.

Also habe ich mich mit Kleansweep beschäftigt. Kleansweep ist ein KDE-Programm, das nicht in den Repositories von Ubuntu ist. Für soclhe Zwecke habe ich auf einer Testpartition Kubuntu installiert. Kleansweep will mit scons, einer Alternative für make (ohne eigene Wertung) kompiliert(installiert werden. Das mitgelieferte scons meckerte wg. qt3. Aber bei mir fehlten im Kubuntu irgendwelche Bibliotheken von qt3. Irgendwas mit qt3 war schon installiert. Was fehlte, weiß ich nicht. Über Synaptic habe ich alles installiert, was qt3 im Namen hatte. Ging immer noch nicht. Dann erweiterte ich die Umgebungsvariable: export qt3=Pfad. Endlich war das Thema gegessen. Dafür meckerte er wegen fehlender "KDE includes" - was immer das ist. Bei Kubuntu Breezy ist es jedenfalls standardmäßig nicht dabei. Ich habe auch nicht herausgefunden, was man installieren muss, damit man die "KDE includes" hat. Ich habe einfach mal, weil es ja ein (frisches) Testsystem ist, alles mögliche von KDE installiert. Das waren hunderte Programmdateien. Hat nichts geholfen. Und wenn ... dann wäre vielleicht die nächste nicht erfüllte Abhängigkeit angemeckert worden. Aber mit Programmen für KDE mache ich (seit max (1996, KDE-Beginn)) selten gute, aber immer wieder schlechte Erfahrungen. Muss ich noch erwähnen, dass Kubuntu danach nicht heruntergefahren werden wollte? Wie gut, dass Ubuntu auf Gnome basiert!

Kleansweep scheidet für mich daher aus. Über Knoppix & Co. (sollte es da drauf sein) kann ich es nicht einsetzen, da die doppelten Dateien auf großen verschlüsselten Partitionen liegen und cryptsetup auf Knoppix (laut Info (Wiki?) von hier) nicht vorhanden ist.

Aber es gibt fdupes. Das ist sogar in den Repositories.

Das erzeugt nicht nur Listen sondern kann im interaktiven Modus auch das Löschen abfragen, wobei man bei jeder Gruppe doppelter Dateien sagen wählen muss, welche Datei erhalten bleiben soll. Das funktioniert prima, ist aber bei großen Anzahlen ungeeignet.

Für große Anzahlen doppelter Dateien hat fdupes zwar keine automatisierte Löschfunktion, aber es kann Listen erzeugen, in der die Dateien schon aufbereitet sind (Leerzeichen erhalten z.B. einen Backslash vorangestellt).

Wie nutzt man diese Listen nun zur Löschung?

Dem Programm rm kann man leider keine Liste übergeben.

Beispiel einer Zeile aus der Liste, die fdupes erzeugt:
/mnt/hda11/fotos/sommer-2003/DCIM/00921786.JPG /mnt/hda11/fotos/elke/unsortiert/Bei\ Alfredo.jpg /mnt/hda11/winrechner/2003/nur\ schoen/ds134.jpg

fdupes erzeugt auch Listen, bei denen jede Datei in einer eigenen Zeile steht. Dann sind aber die Dateidoppler durch Leerzeilen getrennt. Die Leerzeilen lassen sich durch sort eliminieren.

Gruß

Delcour

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Listen lassen sich gut mit xargs bearbeiten:

cat liste | xargs rm


Das löscht aber alle Elemente der Liste.
Wenn die Liste also so aussieht:

a b c 
d e 
f g

und bedeutet, daß a, b, c gleich sind, d und e gleich, f und g gleich, und man will a d und f behalten, dann weiß ich so ad hoc auch keine flotte Lösung.

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Hallo user unknown,

delcour@bolide:~$ fdupes -r -f -1  /mnt/hda11/fotos/ > loesche-30
delcour@bolide:~$ cat loesche-30 | xargs rm
xargs: unmatched einfache quote; by default quotes are special to xargs unless you use the -0 option

Die Option "-f" sorgt dafür, dass das erste Auftreten einer Datei mit Doppelgängern nicht in die Liste geschrieben wird. Die Liste enthält also wirklich nur Löschkandidaten, wobei diese entweder strikt untereinander (mit Leerzeilen bei anderen Duplikaten) oder - bei Gleichheit und Option "-1" - nebeneinander und im Übrigen untereinander stehen. Wie auch immer: Alle Dateinamen in der Ausgabe sind löschbar.

Leider weigert sich xargs, den Input an rm zu liefern.

Mit einigen Einträgen klappt das noch. an der Syntax liegt es demnach nicht.

(Wenn die Löschdatei beispielsweise nur einen Eintrag enthält wie:
/mnt/hda11/fotos/sommer-2003/DCIM/00921786.JPG
)

Aber die Liste enthält knapp tausend Einträge.

Mit
cat loesche-30 | xargs -0 -s 128000 echo
erziele ich noch ein sinnvolles Testergebnis: Jede Zeile wird ausgegeben.

Aber mit
cat loesche-30 | xargs -0 -s 128000 rm

bekomme ich

rm: Entfernen von \,,/mnt/hda11/ ...[ca. 1000 Dateinamen entfernt].jpg \n" nicht möglich: Der Dateiname ist zu lang

Gruß

Delcour

haraldkl

Avatar von haraldkl

Anmeldungsdatum:
21. Juli 2005

Beiträge: 1903

Wohnort: Würselen

Hi,
wiese benutzt du denn "xargs -0"? Sind deine Dateinamen denn durch "Null-Characters" getrennt? Für mich hört sich's eher so an, als wären die durch Newlines oder Leerzeichen voneinander getrennt, wenn dem so ist, so führt die Option "-0" natürlich nicht zum erwünschten Ergebnis, da alles zusammen als ein Dateiname interpretiert wird...

Wozu also die "-0"? Hast du Leerzeichen in den Dateinamen? Vielleicht kann fdupes durch Null-Character separierte listen erzeugen, das wäre das einfachste, falls du Leerzeichen in den Dateinamen hast. 😉

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Hallo!

Die Option "-0" habe ich nur zum Ausprobieren genommen. Ohne die Option kommt es nämlich garnicht erst zur Ausführung von rm sondern bricht xargs bereits wie folgt ab:

delcour@bolide:~$ cat loesche-30 | xargs  -s 128000 rm
xargs: unmatched einfache quote; by default quotes are special to xargs unless you use the -0 option

Die Löschdatei habe ich wie folgt erstellt:

delcour@bolide:~$ fdupes -r -f -1  /mnt/hda11/fotos/ > loesche-30

Das Ausgabeformat kann keine Null-Character separierte Listen erzeugen:

SYNOPSIS
       fdupes [ options ] DIRECTORY ...

DESCRIPTION
       Searches  the  given  path for duplicate files. Such files are found by
       comparing file sizes and MD5 signatures,  followed  by  a  byte-by-byte
       comparison.

OPTIONS
       -r --recurse
              include files residing in subdirectories

       -s --symlinks
              follow symlinked directories

       -H --hardlinks
              normally,  when  two  or  more files point to the same disk area
              they are treated as non-duplicates; this option will change this
              behavior

       -n --noempty
              exclude zero-length files from consideration

       -f --omitfirst
              omit the first file in each set of matches

       -1 --sameline
              list each set of matches on a single line

       -S --size
              show size of duplicate files

       -q --quiet
              hide progress indicator

       -d --delete
              prompt  user  for  files  to  preserve, deleting all others (see
              CAVEATS below)

       -v --version
              display fdupes version

       -h --help
              displays help

SEE ALSO
       md5sum(1)

NOTES
       Unless -1 or  --sameline  is  specified,  duplicate  files  are  listed
       together  in groups, each file displayed on a separate line. The groups
       are then separated from each other by blank lines.

       When -1 or --sameline is specified,  spaces  and  backslash  characters
       (\) appearing in a filename are preceded by a backslash character.

CAVEATS
       If  fdupes returns with an error message such as fdupes: error invoking
       md5sum it means the program  has  been  compiled  to  use  an  external
       program  to  calculate  MD5  signatures (otherwise, fdupes uses interal
       routines for this purpose), and an error has occurred while  attempting
       to  execute  it.  If  this is the case, the specified program should be
       properly installed prior to running fdupes.

       When using -d or --delete, care should be taken to insure against acci-
       dental data loss.

       When  used together with options -s or --symlink, a user could acciden-
       tally preserve a symlink while deleting the file it points to.

       Furthermore, when specifying a particular directory more than once, all
       files  within  that  directory  will be listed as their own duplicates,
       leading to data loss should a user preserve a file without its  "dupli-
       cate" (the file itself!).

AUTHOR
       Adrian Lopez <adrian2@caribe.net>

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Das Problem in meinem Fall ist unter anderem darin begründet, dass die von fdupes erzeugte Löschliste nicht xargs/rm-geeignet ist, denn

1) Leerzeichen werden zwar mit einem vorangehenden Backslash versehen, nicht aber andere zulässige Zeichen wie "'^" oder " ' " ,

2) sind die Umlaute in den Dateinamen bei der Migration von Win nach Linux durch Schrottzeichen, die in Terminal, gedit und nautilus jeweils anders bzw. nicht dargstellt werden, ersetzt worden. Die verlorenen Umlaute stören mich eigentlich nicht. Aber ich hatte nicht damit gerechnet, dass die Dateien unter Linux nur noch eingeschränkt nutzbar sind. Diese Dateien findet rm nicht, obwohl sie vorhanden sind und fdupes den Dateinamen innerhalb der gleichen Umgebung (xterm oder gnome-terminal) in die Textdatei schreibt, in der rm dann diese Dateien löschen soll.

Ich werde etwas anderes versuchen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Migration bedeutet, die Dateien sind bereits mit ihren verunstalteten Namen auf einem Linuxfilesystem angekommen, und können durch ein geeignetes Setzen des encodings in der fstab nicht geheilt werden?

Tut mir leid, daß xargs so nicht weiterhilft.
Aber ich habe Blut geleckt, und hätte noch folgenden Jagdplan:

1. Wir finden heraus, welche häßlichen Zeichen uns das Leben schwer machen.
Angenommen Deine Dateiliste heißt dateiliste:

sed 's/[a-zA-Z.0-9:_\ -]/_/g;s/_\+/_/g' dateiliste | sort -u 


sort kennst Du schon, sed ist ein Streameditor, und der Befehl s/[a-zA-Z.0-9:\ -]/_/g läßt sich übersetzen mit:
s/ substitute
.../ dies
.../ durch jenes
g globally - nicht nur das erste Auftreten pro Zeile.

Dabei ist dies: [a-zA-Z.0-9:\ -] eine Menge
und jenes ein Unterstrich _
Und das sind die häufigsten Zeichen, die in Dateinamen vorkommen.
Aus wiederholten Unterstrichen mache ich nun einen einzigen:
s/_\+/_/g
und dann müßte ich eine recht kurze Liste an üblen Namensresten bekommen.
Diese Zeichen packe ich alle in meine Menge, bis ich alle habe.
Ich habe so gefunden: &{}!
Alle ein wenig verdächtig in der Shell.

! steht für nicht, mit & schickt man einen Prozeß in den Hintergrund, und geschweifte Klammern haben auch eine besondere Bedeutung.

Von den häßlichen Zeichen überprüfe ich jedes, von dem ich nicht sicher weiß, daß es Probleme oder keine bereitet, ob ich eine Testdatei mit diesem Namen ohne weiteres löschen kann, bzw. ob es mit einem vorangestellten Backslash klappt:

touch C\&A.txt
rm C-> (tab)
touch rock\'n\'roll.html
rm rock-> (tab)

etc. pp.
→ soll ein Tabulator sein.

Für alle Zeichen, die mit der Maskierung geschnappt werden können, ändere ich die Dateiliste, so daß die Sonderzeichen maskiert sind.
Das sollte mit sed kein Problem sein:

sed 's/\([&!']\)/\\\1/g' dateiliste > dateiliste2


Ist es aber doch, denn auch hier bedeuten &!' etc. wieder besonderes, und zwar zuerst für die Shell, und dann nochmal für sed.

Jetzt wäre es fast an der Zeit einen Arzt zu rufen, aber zum Glück kann man die sed-Befehle in eine Datei schreiben, und dann entfällt die Maskierung für die Shell.
Ich lege also eine Datei dl.sed an mit folgendem Inhalt:

s/\([&!']\)/\\\1/g

an, und rufen nun sed so auf:

sed -f dl.sed dateiliste > dateiliste2

Was ich noch nicht zu fassen bekommen habe, das sind die Zombieumlaute.
Die Frage ist nun, wie häufig sind diese, und wie ähnlich sind die Dateinamen mit Dateinamen anderer Dateien, die nicht gelöscht werden sollen.

Eine Datei böse.txt, die jetzt als b²se.txt erscheint, kann ich mit

rm b.se.txt

löschen, aber eine base.txt würde ich damit gleich mitlöschen.

Mit sed könnte ich also alle Zeichen, die nicht in der Gruppe [a-zA-Z0-9 &!^-_{}] (kein Anspruch auf Vollständigkeit) sind, in ein Fragezeichen ändern, und so löschen.
Das Risiko kannst aber nur Du abschätzen.
Beim Caret-Zeichen mußt Du vorsichtig sein. Es darf nicht das erste in der Gruppe sein, denn als erstes negiert es die Gruppe.
Insofern muß es dann doch in der Gruppe sein, denn wir wollen ja genau die Gruppe negieren:

s/[^a-zA-Z0-9&!^_'{}. -]/?/g


(Substituiere alles, was nicht in dieser Zeichenmenge ist durch ein Fragezeichen)
Ebenfalls tückisch ist das Minuszeichen, denn es erlaubt die Definition von Gruppen (A-Z).
Meint man es selbst, so stellt man es z.B. ans Ende der Gruppe, so daß sed merkt, daß man hier keine Gruppe meint, sondern das Zeichen selbst.

Bevor man wirklich ans Löschen schreitet, sollte man natürlich einen Test machen, und statt 'rm' vielleicht 'ls' aufrufen, um zu prüfen, ob man nicht doch ein bißchen Mist gebaut hat, und nun die ganze Platte löscht. ☺

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Als ich geschrieben habe, ich wolle etwas anderes probieren, meinte ich damit, meine verschlüsselte Platte mit Samba freizugeben und darauf übers Netz mit einem Windowsrechner zuzugreifen, auf dem eine Software namens "dupemaster" installiert ist. Die findet doppelte Dateien, gruppiert sie, lässt dem Anwender die Wahl, was gelöscht werden soll, oder löscht automatisch (z.B. alle nach dem zweiten Eintrag), wobei die Möglichkeit besteht, die zu löschenden Dateien vorher in ein ZIP-Archiv zu sichern. Das klappt grundsätzlich auch, wie ich mir das vorgestellt habe, aber es dauert seeeehr lange, da bei mir über eine 11 MBit WLAN-Verbindung.

Deinen Ansatz, Unknown User, finde ich viel interessanter, weil er, wenn er funktioniert, schneller ist, keinen weiteren Rechner benötigt und ohne Win auskommt. Vorab schonmal Danke dafür.

Ich habe die Dateien nochmal von den alten Windowsplatten auf mein Linuxsystem geholt und diesmal aufgepasst, dass ich sie mit utf8 einbinde.

delcour@bolide:~$ sudo mount -t auto -o users,ro,umask=0222,nls=utf8 /dev/sdg1 /mnt/pferd

Jetzt sind die Dateien auf dem Linuxsystem.

Als ich den Befehl fdupes ausführte, habe ich nicht aufgepasst, dass mein Terminal im utf8-Modus ist. Er war im ISO 8859-1-Modus. Die auf diese Weise mit

fdupes -f -r /mnt/hda11/pfad

erstellte Liste auf

sed 's/[a-zA-Z.0-9:_\ -]/_/g;s/_\+/_/g' dateiliste | sort -u

angewandt, liefert

/_/_/_/_/_/_
/_/_/_/_/_/_`_
/_/_/_/_/_/_`_,_(_)_
/_/_/_/_/_/_,_
/_/_/_/_/_/_,___
/_/_/_/_/_/_,__,_
/_/_/_/_/_/_!_
/_/_/_/_/_/_!!_
/_/_/_/_/_/_/_
/_/_/_/_/_/_/_´_
/_/_/_/_/_/_/_´_(_)_
/_/_/_/_/_/_/_`_
/_/_/_/_/_/_/_`_,_(_)_
/_/_/_/_/_/_/_~_
/_/_/_/_/_/_/_=_=_
/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_,_,_
/_/_/_/_/_/_/_,_,_,_
/_/_/_/_/_/_/_,_(_)_
/_/_/_/_/_/_/_,_&_
/_/_/_/_/_/_/_,__
/_/_/_/_/_/_/_,__
/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_!_(_)_
/_/_/_/_/_/_/_¿_
/_/_/_/_/_/_/_¿_'_
/_/_/_/_/_/_/_¿_(_)_
/_/_/_/_/_/_/_¿_[_]_
/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_´_
/_/_/_/_/_/_/_/_`_
/_/_/_/_/_/_/_/_=_=_
/_/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_/_,_,_
/_/_/_/_/_/_/_/_,_,_,_
/_/_/_/_/_/_/_/_,_,_,_'_
/_/_/_/_/_/_/_/_,_,_(_)_
/_/_/_/_/_/_/_/_,_,_&_(_)_
/_/_/_/_/_/_/_/_,_!_!_
/_/_/_/_/_/_/_/_,_'_
/_/_/_/_/_/_/_/_,_(_)_
/_/_/_/_/_/_/_/_,_¤__¤_
/_/_/_/_/_/_/_/_;_
/_/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_/_!_!_
/_/_/_/_/_/_/_/_!_!_'_
/_/_/_/_/_/_/_/_!_'_
/_/_/_/_/_/_/_/_!_(_)_
/_/_/_/_/_/_/_/_!_)_
/_/_/_/_/_/_/_/_!!_
/_/_/_/_/_/_/_/_!!!_
/_/_/_/_/_/_/_/_¡_
/_/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_/_/_,_¤_
/_/_/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_/_¶_
/_/_/_/_/_/_/_/_/_¤_
/_/_/_/_/_/_/_/_/_¤_¤_
/_/_/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_/_/__
/_/_/_/_/_/_/_/_/__
/_/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_/_'_,_
/_/_/_/_/_/_/_/_'_,_'_
/_/_/_/_/_/_/_/_'_!_
/_/_/_/_/_/_/_/_'_'_
/_/_/_/_/_/_/_/_'_'_'_'_
/_/_/_/_/_/_/_/_'_'_(_)_
/_/_/_/_/_/_/_/_'_(_'')_
/_/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_/_'_[_]_
/_/_/_/_/_/_/_/_(=(_
/_/_/_/_/_/_/_/_(_
/_/_/_/_/_/_/_/_(_,_!)_
/_/_/_/_/_/_/_/_(_!)_
/_/_/_/_/_/_/_/_(_'_
/_/_/_/_/_/_/_/_(_'_')_
/_/_/_/_/_/_/_/_(_'_)_
/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_/_/_(_)(_)_
/_/_/_/_/_/_/_/_(_)(_)_(_)_
/_/_/_/_/_/_/_/_(_))_
/_/_/_/_/_/_/_/_(_&_)_
/_/_/_/_/_/_/_/_)_
/_/_/_/_/_/_/_/_[_)_
/_/_/_/_/_/_/_/_[_]_
/_/_/_/_/_/_/_/_[_]_(_
/_/_/_/_/_/_/_/_][_
/_/_/_/_/_/_/_/_{_}_
/_/_/_/_/_/_/_/_¶_
/_/_/_/_/_/_/_/_¶_&_
/_/_/_/_/_/_/_/_¤_
/_/_/_/_/_/_/_/_¥_
/_/_/_/_/_/_/_/_¥_¤_
/_/_/_/_/_/_/_/_¥_¥_
/_/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_/_&_'_
/_/_/_/_/_/_/_/_&_'_'_
/_/_/_/_/_/_/_/_&_(_)_
/_/_/_/_/_/_/_/_&_)_
/_/_/_/_/_/_/_/_&_¶_
/_/_/_/_/_/_/_/_&_&_
/_/_/_/_/_/_/_/_&_&_(_)_
/_/_/_/_/_/_/_/_#_
/_/_/_/_/_/_/_/_#_!_
/_/_/_/_/_/_/_/_#_#_
/_/_/_/_/_/_/_/__
/_/_/_/_/_/_/_/__¤_
/_/_/_/_/_/_/_/__
/_/_/_/_/_/_/_/__¤_
/_/_/_/_/_/_/_/__
/_/_/_/_/_/_/_/(_)_
/_/_/_/_/_/_/_/[_]_
/_/_/_/_/_/_/_/#_#_
/_/_/_/_/_/_/_/+_
/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_'_/_/_'_
/_/_/_/_/_/_/_'_'_
/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_'_(((_)))_
/_/_/_/_/_/_/_(_
/_/_/_/_/_/_/_(_`_)_
/_/_/_/_/_/_/_(_,_)_
/_/_/_/_/_/_/_(_;_)_
/_/_/_/_/_/_/_(_!_'_)/_
/_/_/_/_/_/_/_(_!)_
/_/_/_/_/_/_/_(_¿_
/_/_/_/_/_/_/_(_'_)_
/_/_/_/_/_/_/_(_''_)_
/_/_/_/_/_/_/_(_'')_
/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_(_)_`_
/_/_/_/_/_/_/_(_)_!_
/_/_/_/_/_/_/_(_)_!_(_)_
/_/_/_/_/_/_/_(_)_'_
/_/_/_/_/_/_/_(_)_'_¢_
/_/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_/_(_)_¶_
/_/_/_/_/_/_/_(_)_¤_
/_/_/_/_/_/_/_(_)/_
/_/_/_/_/_/_/_(_)/_'_
/_/_/_/_/_/_/_(_)/_(_)_
/_/_/_/_/_/_/_(_)/_&_
/_/_/_/_/_/_/_(_)/_&_(_)_
/_/_/_/_/_/_/_(_)(_)_
/_/_/_/_/_/_/_(_¶_)_
/_/_/_/_/_/_/_(_&_)_
/_/_/_/_/_/_/_('_;_)_
/_/_/_/_/_/_/_(+_)_
/_/_/_/_/_/_/_)_
/_/_/_/_/_/_/_)_=_=_
/_/_/_/_/_/_/_[_]_
/_/_/_/_/_/_/_{_
/_/_/_/_/_/_/_{_}_
/_/_/_/_/_/_/_¶_
/_/_/_/_/_/_/_¶_/_
/_/_/_/_/_/_/_¶_/_,_
/_/_/_/_/_/_/_¶_/_/_¶_
/_/_/_/_/_/_/_¶_/_/_¶_,_
/_/_/_/_/_/_/_¶_/_/_¶_'_
/_/_/_/_/_/_/_¶_/_/_¶_(_)_
/_/_/_/_/_/_/_¶_/_/_¶_¶_(_)_
/_/_/_/_/_/_/_¶_/_(_)_
/_/_/_/_/_/_/_¶_/_¶_
/_/_/_/_/_/_/_¶_/_¶_,_
/_/_/_/_/_/_/_¶_/_¶_'_
/_/_/_/_/_/_/_¶_/_¶_(_)_
/_/_/_/_/_/_/_¶_/_¶_{_)_
/_/_/_/_/_/_/_¶_/_¶_¶_
/_/_/_/_/_/_/_¶_/_¶_¶_(_)_
/_/_/_/_/_/_/_¶_/_¶_¶_¶_(_)_
/_/_/_/_/_/_/_¶_/_¶_¤_
/_/_/_/_/_/_/_¶_/_¶_¤_(_)_
/_/_/_/_/_/_/_¶_/_¶_¥_(_)_
/_/_/_/_/_/_/_¶_¤_
/_/_/_/_/_/_/_©_(__)_
/_/_/_/_/_/_/_¤_
/_/_/_/_/_/_/_¤_(_'_¢_)_
/_/_/_/_/_/_/_¤_(_)_
/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_&_,_
/_/_/_/_/_/_/_&_/_
/_/_/_/_/_/_/_&_/_/_
/_/_/_/_/_/_/_&_/_/_'_
/_/_/_/_/_/_/_&_/_/_(_'_)_
/_/_/_/_/_/_/_&_/_'_
/_/_/_/_/_/_/_&_/_(_)_
/_/_/_/_/_/_/_&_/_&_
/_/_/_/_/_/_/_&_/_&_,_
/_/_/_/_/_/_/_&_/_&_'_
/_/_/_/_/_/_/_&_/_&_'_'_
/_/_/_/_/_/_/_&_/_&_(_'_)_
/_/_/_/_/_/_/_&_/_&_(_)_
/_/_/_/_/_/_/_&_'_
/_/_/_/_/_/_/_&_'_/_
/_/_/_/_/_/_/_&_'_/_'_
/_/_/_/_/_/_/_&_'_/_(_)_
/_/_/_/_/_/_/_&_'_/_&_
/_/_/_/_/_/_/_&_(_
/_/_/_/_/_/_/_&_(_)_
/_/_/_/_/_/_/_&_(+_)_
/_/_/_/_/_/_/_#_
/_/_/_/_/_/_/_#_#_
/_/_/_/_/_/_/_%_
/_/_/_/_/_/_/_+_(_=_)_
/_/_/_/_/_/_/___(_)_
/_/_/_/_/_/_/__
/_/_/_/_/_/_/__
/_/_/_/_/_/_/__/__
/_/_/_/_/_/_/__/__!_
/_/_/_/_/_/_/__/__'_
/_/_/_/_/_/_/__/__(_)_
/_/_/_/_/_/_/__/__¤_
/_/_/_/_/_/_/__/___
/_/_/_/_/_/_/__/___
/_/_/_/_/_/_/__
/_/_/_/_/_/_/__
/_/_/_/_/_/_/__
/_/_/_/_/_/_/__(_)_
/_/_/_/_/_/_/[_]_
/_/_/_/_/_/_/[_]_(_)_
/_/_/_/_/_/_'_
/_/_/_/_/_/_'_/_
/_/_/_/_/_/_'_/_´_
/_/_/_/_/_/_'_/_`_
/_/_/_/_/_/_'_/_`_`_
/_/_/_/_/_/_'_/_,_
/_/_/_/_/_/_'_/_,_,_
/_/_/_/_/_/_'_/_!_
/_/_/_/_/_/_'_/_!!_
/_/_/_/_/_/_'_/_'_
/_/_/_/_/_/_'_/_'_'_
/_/_/_/_/_/_'_/_'_'_(_)_
/_/_/_/_/_/_'_/_'_(_)_
/_/_/_/_/_/_'_/_(_'_)_
/_/_/_/_/_/_'_/_(_'')_
/_/_/_/_/_/_'_/_(_)_
/_/_/_/_/_/_'_/_(_¶_¶_)_
/_/_/_/_/_/_'_/_{_}_
/_/_/_/_/_/_'_/_¶_
/_/_/_/_/_/_'_/_¶_¤_
/_/_/_/_/_/_'_/_¤_
/_/_/_/_/_/_'_/_¤_¤_
/_/_/_/_/_/_'_/_&_
/_/_/_/_/_/_'_/__
/_/_/_/_/_/_'_/(_)_
/_/_/_/_/_/_'_(_)/_
/_/_/_/_/_/_'_(_)/_'_
/_/_/_/_/_/_'_(_)/_'_(_)_
/_/_/_/_/_/_'_(_)/_(_)_
/_/_/_/_/_/_'_(_)/_¤_
/_/_/_/_/_/_'_(((_)))_
/_/_/_/_/_/_'__
/_/_/_/_/_/_(_)_
/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_(__
/_/_/_/_/_/_(___)_
/_/_/_/_/_/_[_]_
/_/_/_/_/_/_[_]_(_)_
/_/_/_/_/_/_][_
/_/_/_/_/_/_&_
/_/_/_/_/_/_&__
/_/_/_/_/_/__
/_/_/_/_/_/__(_)_
/_/_/_/_/_/__[_]_
/_/_/_/_/_/___(_)_
/_/_/_/_/_/__
/_/_/_/_/_/__(_!!)_
/_/_/_/_/_/__
/_/_/_/_/_/___
/_/_/_/_/_/__
/_/_/_/_/_/[_]_
/_/_/_/_/_/[_]_(_)_
/_/_/_/_/_'_/__
/_/_/_/_/_/_/_/_/_¼_
/_/_/_/_/_/_/_/_/_¼__
/_/_/_/_/_/_/_/_¶_¼_
/_/_/_/_/_/_/_/_¤_¼_
/_/_/_/_/_/_/_/__¼_
/_/_/_/_/_/_/_/__¼_
/_/_/_/_/_/_/_/_¼_
/_/_/_/_/_/_/_/_¼_,_
/_/_/_/_/_/_/_/_¼_/_
/_/_/_/_/_/_/_/_¼_(_)_
/_/_/_/_/_/_/_/_¼_¤_
/_/_/_/_/_/_/_'_¼_
/_/_/_/_/_/_/_(_)_¶_¼_
/_/_/_/_/_/_/_(_)_¼_
/_/_/_/_/_/_/_(_)/_¼_
/_/_/_/_/_/_/_(_¼_
/_/_/_/_/_/_/_¶_/_¶_¼_
/_/_/_/_/_/_/_¶_¼_
/_/_/_/_/_/_/_&_¼_
/_/_/_/_/_/_/_¼_
/_/_/_/_/_/_/_¼_'_
/_/_/_/_/_/_/_¼_(_)_
/_/_/_/_/_/_/_¼_[_]_
/_/_/_/_/_/_/_¼_¤_(_)_
/_/_/_/_/_/_'_/_,_¼_
/_/_/_/_/_/_'_/_¼_
/_/_/_/_/_/_'_(_)/_¼_
/_/_/_/_/_/_/_¼_/_¼_
/_/_/_/_/_/_/_¼_/_¼_'_
/_/_/_/_/_/_/_¼_/_¼_'_¤_
/_/_/_/_/_/_/_¼_/_¼_¤_
/_/_/_/_/_/_/_¼_¼_
/_/_/_/_/_/_/_¼_¼_,_¶_,_
/_/_/_/_/_/_/_³_
/_/_/_/_/_/_/_'_ _'_

Bei mir im Browser werden die Zeichen nicht alle dargestellt.

Seit einer Stunde läuft fdupes nochmal, während im Terminal utf8 eingestellt ist.

Dann sehen wir weiter.

Im Folgenden das Ergebnis. Was hier im Browser als \uffff angezeigt wird, sehe ich im Terminal als hochkantiges Rechteck.

/_/_/_/_/_/_
/_/_/_/_/_/_`_
/_/_/_/_/_/_`_,_(_)_
/_/_/_/_/_/_,_
/_/_/_/_/_/_,_\uffff_\uffff_
/_/_/_/_/_/_,_\uffff_,_
/_/_/_/_/_/_!_
/_/_/_/_/_/_!!_
/_/_/_/_/_/_/_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/_`_
/_/_/_/_/_/_/_`_,_(_)_
/_/_/_/_/_/_/_~_
/_/_/_/_/_/_/_=_=_
/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_,_,_
/_/_/_/_/_/_/_,_,_,_
/_/_/_/_/_/_/_,_(_)_
/_/_/_/_/_/_/_,_&_
/_/_/_/_/_/_/_,_\uffff_
/_/_/_/_/_/_/_,_\uffff_
/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_!_(_)_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_[_]_
/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_`_
/_/_/_/_/_/_/_/_=_=_
/_/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_/_,_,_
/_/_/_/_/_/_/_/_,_,_,_
/_/_/_/_/_/_/_/_,_,_,_'_
/_/_/_/_/_/_/_/_,_,_(_)_
/_/_/_/_/_/_/_/_,_,_&_(_)_
/_/_/_/_/_/_/_/_,_!_!_
/_/_/_/_/_/_/_/_,_'_
/_/_/_/_/_/_/_/_,_(_)_
/_/_/_/_/_/_/_/_,_\uffff_\uffff_\uffff_
/_/_/_/_/_/_/_/_;_
/_/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_/_!_!_
/_/_/_/_/_/_/_/_!_!_'_
/_/_/_/_/_/_/_/_!_'_
/_/_/_/_/_/_/_/_!_(_)_
/_/_/_/_/_/_/_/_!_)_
/_/_/_/_/_/_/_/_!!_
/_/_/_/_/_/_/_/_!!!_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_/_,_
/_/_/_/_/_/_/_/_/_,_\uffff_
/_/_/_/_/_/_/_/_/_!_
/_/_/_/_/_/_/_/_/_/_
/_/_/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_/_'_,_
/_/_/_/_/_/_/_/_'_,_'_
/_/_/_/_/_/_/_/_'_!_
/_/_/_/_/_/_/_/_'_'_
/_/_/_/_/_/_/_/_'_'_'_'_
/_/_/_/_/_/_/_/_'_'_(_)_
/_/_/_/_/_/_/_/_'_(_'')_
/_/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_/_'_[_]_
/_/_/_/_/_/_/_/_(=(_
/_/_/_/_/_/_/_/_(_
/_/_/_/_/_/_/_/_(_,_!)_
/_/_/_/_/_/_/_/_(_!)_
/_/_/_/_/_/_/_/_(_'_
/_/_/_/_/_/_/_/_(_'_')_
/_/_/_/_/_/_/_/_(_'_)_
/_/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_/_/_(_)(_)_
/_/_/_/_/_/_/_/_(_)(_)_(_)_
/_/_/_/_/_/_/_/_(_))_
/_/_/_/_/_/_/_/_(_&_)_
/_/_/_/_/_/_/_/_)_
/_/_/_/_/_/_/_/_[_)_
/_/_/_/_/_/_/_/_[_]_
/_/_/_/_/_/_/_/_[_]_(_
/_/_/_/_/_/_/_/_][_
/_/_/_/_/_/_/_/_{_}_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_&_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_/_&_'_
/_/_/_/_/_/_/_/_&_'_'_
/_/_/_/_/_/_/_/_&_(_)_
/_/_/_/_/_/_/_/_&_)_
/_/_/_/_/_/_/_/_&_\uffff_
/_/_/_/_/_/_/_/_&_&_
/_/_/_/_/_/_/_/_&_&_(_)_
/_/_/_/_/_/_/_/_#_
/_/_/_/_/_/_/_/_#_!_
/_/_/_/_/_/_/_/_#_#_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/(_)_
/_/_/_/_/_/_/_/[_]_
/_/_/_/_/_/_/_/#_#_
/_/_/_/_/_/_/_/+_
/_/_/_/_/_/_/_'_
/_/_/_/_/_/_/_'_/_/_'_
/_/_/_/_/_/_/_'_'_
/_/_/_/_/_/_/_'_(_)_
/_/_/_/_/_/_/_'_(((_)))_
/_/_/_/_/_/_/_(_
/_/_/_/_/_/_/_(_`_)_
/_/_/_/_/_/_/_(_,_)_
/_/_/_/_/_/_/_(_;_)_
/_/_/_/_/_/_/_(_!_'_)/_
/_/_/_/_/_/_/_(_!)_
/_/_/_/_/_/_/_(_\uffff_
/_/_/_/_/_/_/_(_'_)_
/_/_/_/_/_/_/_(_''_)_
/_/_/_/_/_/_/_(_'')_
/_/_/_/_/_/_/_(_)_
/_/_/_/_/_/_/_(_)_`_
/_/_/_/_/_/_/_(_)_!_
/_/_/_/_/_/_/_(_)_!_(_)_
/_/_/_/_/_/_/_(_)_'_
/_/_/_/_/_/_/_(_)_'_\uffff_
/_/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_/_(_)_\uffff_
/_/_/_/_/_/_/_(_)_\uffff_
/_/_/_/_/_/_/_(_)/_
/_/_/_/_/_/_/_(_)/_'_
/_/_/_/_/_/_/_(_)/_(_)_
/_/_/_/_/_/_/_(_)/_&_
/_/_/_/_/_/_/_(_)/_&_(_)_
/_/_/_/_/_/_/_(_)(_)_
/_/_/_/_/_/_/_(_\uffff_)_
/_/_/_/_/_/_/_(_&_)_
/_/_/_/_/_/_/_('_;_)_
/_/_/_/_/_/_/_(+_)_
/_/_/_/_/_/_/_)_
/_/_/_/_/_/_/_)_=_=_
/_/_/_/_/_/_/_[_]_
/_/_/_/_/_/_/_{_
/_/_/_/_/_/_/_{_}_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_
/_/_/_/_/_/_/_\uffff_/_,_
/_/_/_/_/_/_/_\uffff_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_/_\uffff_,_
/_/_/_/_/_/_/_\uffff_/_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_/_/_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_,_
/_/_/_/_/_/_/_\uffff_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_/_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_{_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_(_\uffff_)_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_(_'_\uffff_)_
/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/_&_
/_/_/_/_/_/_/_&_,_
/_/_/_/_/_/_/_&_/_
/_/_/_/_/_/_/_&_/_/_
/_/_/_/_/_/_/_&_/_/_'_
/_/_/_/_/_/_/_&_/_/_(_'_)_
/_/_/_/_/_/_/_&_/_'_
/_/_/_/_/_/_/_&_/_(_)_
/_/_/_/_/_/_/_&_/_&_
/_/_/_/_/_/_/_&_/_&_,_
/_/_/_/_/_/_/_&_/_&_'_
/_/_/_/_/_/_/_&_/_&_'_'_
/_/_/_/_/_/_/_&_/_&_(_'_)_
/_/_/_/_/_/_/_&_/_&_(_)_
/_/_/_/_/_/_/_&_'_
/_/_/_/_/_/_/_&_'_/_
/_/_/_/_/_/_/_&_'_/_'_
/_/_/_/_/_/_/_&_'_/_(_)_
/_/_/_/_/_/_/_&_'_/_&_
/_/_/_/_/_/_/_&_(_
/_/_/_/_/_/_/_&_(_)_
/_/_/_/_/_/_/_&_(+_)_
/_/_/_/_/_/_/_#_
/_/_/_/_/_/_/_#_#_
/_/_/_/_/_/_/_%_
/_/_/_/_/_/_/_+_(_=_)_
/_/_/_/_/_/_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_!_
/_/_/_/_/_/_/_\uffff_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_/_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/[_]_
/_/_/_/_/_/_/[_]_(_)_
/_/_/_/_/_/_'_
/_/_/_/_/_/_'_/_
/_/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_'_/_`_
/_/_/_/_/_/_'_/_`_`_
/_/_/_/_/_/_'_/_,_
/_/_/_/_/_/_'_/_,_,_
/_/_/_/_/_/_'_/_!_
/_/_/_/_/_/_'_/_!!_
/_/_/_/_/_/_'_/_'_
/_/_/_/_/_/_'_/_'_'_
/_/_/_/_/_/_'_/_'_'_(_)_
/_/_/_/_/_/_'_/_'_(_)_
/_/_/_/_/_/_'_/_(_'_)_
/_/_/_/_/_/_'_/_(_'')_
/_/_/_/_/_/_'_/_(_)_
/_/_/_/_/_/_'_/_(_\uffff_\uffff_)_
/_/_/_/_/_/_'_/_{_}_
/_/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_'_/_\uffff_\uffff_
/_/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_'_/_\uffff_\uffff_
/_/_/_/_/_/_'_/_&_
/_/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_'_/(_)_
/_/_/_/_/_/_'_(_)/_
/_/_/_/_/_/_'_(_)/_'_
/_/_/_/_/_/_'_(_)/_'_(_)_
/_/_/_/_/_/_'_(_)/_(_)_
/_/_/_/_/_/_'_(_)/_\uffff_
/_/_/_/_/_/_'_(((_)))_
/_/_/_/_/_/_'_\uffff_
/_/_/_/_/_/_(_)_
/_/_/_/_/_/_(_)_(_)_
/_/_/_/_/_/_(_\uffff_
/_/_/_/_/_/_(_\uffff_\uffff_)_
/_/_/_/_/_/_[_]_
/_/_/_/_/_/_[_]_(_)_
/_/_/_/_/_/_][_
/_/_/_/_/_/_&_
/_/_/_/_/_/_&_\uffff_
/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_\uffff_[_]_
/_/_/_/_/_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_\uffff_(_!!)_
/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_\uffff_
/_/_/_/_/_/[_]_
/_/_/_/_/_/[_]_(_)_
/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_/_\uffff_,_
/_/_/_/_/_/_/_/_\uffff_/_
/_/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_'_\uffff_
/_/_/_/_/_/_/_(_)_\uffff_\uffff_
/_/_/_/_/_/_/_(_)_\uffff_
/_/_/_/_/_/_/_(_)/_\uffff_
/_/_/_/_/_/_/_(_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_&_\uffff_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_(_)_
/_/_/_/_/_/_/_\uffff_[_]_
/_/_/_/_/_/_/_\uffff_\uffff_(_)_
/_/_/_/_/_/_'_/_,_\uffff_
/_/_/_/_/_/_'_/_\uffff_
/_/_/_/_/_/_'_(_)/_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_'_
/_/_/_/_/_/_/_\uffff_/_\uffff_'_\uffff_
/_/_/_/_/_/_/_\uffff_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_\uffff_
/_/_/_/_/_/_/_\uffff_\uffff_,_\uffff_,_
/_/_/_/_/_/_/_\uffff_
/_/_/_/_/_/_/_'_\uffff_'_

Deine übrigen Ausführungen verstehe ich nicht auf Anhieb exakt. Am Sonntag, hoffe ich Ruhe zu finden, mich ausführlich dahineinzuvertiefen.

Bis dahin!

Gruß

Delcour

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Wenn ich mir die Zeichen so ansehe komme ich zu folgendem sed-Skript: (dl2.sed)

# Sonderzeichen mit Backslash maskieren:
# Die drei ersten Zeichen der Menge sollen sein Accent aigue, Accent grave (Backtick), und Einfaches Anführungszeichen (Auslassungszeichen)
# Alle anderen Sonderzeichen, die nicht in der Menge sind, müssen nicht maskiert werden, d.h. z.B. 'rm a+b' klappt problemlos.
s/\([`''()&;!\\ ]\)/\\\1/g
# Sonderzeichen, die nicht in der Liste sind, mit einem Jokerzeichen ersetzen:
s/[^a-zA-Z.0-9'''`%°:_=,()&+~;!\^#{}\/\ -]/?/g


Das so:

sed -f dl2.sed dateiliste > dateiliste2

auf die Dateiliste angewandt werden könnte.

delcour

Avatar von delcour

Anmeldungsdatum:
20. April 2005

Beiträge: 655

Wohnort: Berlin

Nochmals danke. Die sed-Umwandlungen haben geholfen. Vor allem das Maskieren der Hochkommas. Was die Umlaute betrifft, war es mir nicht automatisiert möglich. Die verbliebenen 368 Duplikate habe ich mit der "-d" Option von fdupes manuell einzeln gelöscht, indem ich mich entschied, immer den zweiten Eintrag zu behalten.

Gruß

Delcour

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17608

Wohnort: Berlin

Auch gut.

Ich nehme an, ab sofort sammelst Du keine Fotos mehr, sondern sed-Skripte ☺

Antworten |