PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tools zur Assoziativsuche von Dateien



Noether
04.08.16, 18:20
Bei Dateien, PDFs oder Bildern, vermute ich manchmal das ich die schon irgendwo habe, unter einem anderen Namen und meist stimmt das auch.
Deshalb brauche ich eine Assozitativsuche, also Suche nach dem Inhalt, nicht nach Dateinamen.
Ein Ansatz wäre eine alphabetisch geordnete Liste von Hashwerten, z. B. SHA1 oder SHA512, aber es müsste doch diverse Tools geben die das automatisch machen, so wie locate für die Dateinamen.
Was gibt es denn an Programmen, die wie locate ein Dateiverzeichnis anlegen, aber nicht nach den Namen sondern den Inhalten? :confused:

nopes
04.08.16, 18:35
Nein gibt es nicht wirklich, MS wollte mal was in der Richtung machen, als Nachfolger für NTFS, ist aber nie soweit gekommen, GSA gibt es nicht mehr. Befürchte da wirst du selber Hand anlegen müssen, las mich da aber auch gerne eines besseren belehren. Ein Problem mit den Hashes ist, dass es 100% matchen muss, gerade wenn man so sucht, will man aber ja auch Dateien sehen, die ähnlich sind - nicht wirklich einfach...

BetterWorld
04.08.16, 18:50
Es gibt einige Algorithmen, die zumindest Text nach Ähnlichkeiten durchsuchen können.
Der like Operator bei SQL tut sowas.
Damit kann man sich ganz nette Dingerchen basteln.

Aber nur für Textdokumente.
Bei Bildern scheitert es an der Semantik.
Man müsste die Bilder erst durch eine Bildererkennungssoftware jagen.
Dann die Ergebnisse irgendwie sauber verschlagworten und dann indiziert speichern.
Der Algorithmus muss aber auf jedes Bild neu angewendet werden.

Das ist einfach so nicht machbar.
Zwar gibt es genügend Algos, die so etwas im Prinzip leisten,
aber es gehört eine enorme Infrastruktur dazu.
Mit einer Desktopkiste bist du da im Reich von Isnich.

nopes
04.08.16, 18:58
Noch besser für sowas sind Trigramme geeignet, werden zB von PostgreSQL (https://www.postgresql.org/docs/current/static/pgtrgm.html) komplett unterstützt, aber eben nur Text, wobei PDFs kann man inzwischen ja relativ gut zu Text wandeln, für Bilder gibt es diverse Converter die es in ASCII-Art wandeln, aber Video, Musik und was es da noch alles für Binär Formate gibt, da wird es halt eng...

naraesk
04.08.16, 19:21
Wie verwaltest du denn deine Bilder und Dokumente?

Eine Ähnlichkeitssuche für Bilder sollte jede bessere Fotoverwaltung eigentlich mitbringen, unter KDE wäre dies zum Beispiel Digikam. Unter KDE gibt es zudem baloo, das alle Dokumente (pdf, odt, doc, …) indexiert, den Text extrahiert und somit automatisch durchsuchbar macht.

Noether
04.08.16, 19:41
Also eine Möglichkeit wäre eine Liste der SHA512-Werte anzulegen in einem Verzeichnis wie /opt/locate/, mit jeweils einer Datei die den SHA512-Wert als Dateinamen hat und sie enthält die Liste der Dateien mit dem betreffenden SHA512-Wert.
Damit bräuchte man nur einen Alias, der zu einer Datei den SHA512-Wert berechnet und dazu locate aufruft, um herauszufinden wo Duplikate sind.
Dazu braucht man ein Programm das diese Liste erstellt.
Sowas muss es doch irgendwo schon längst geben.

ThorstenHirsch
04.08.16, 20:47
Naja, so etwas ist in ein paar Minuten geskriptet, Noether, aber das ist ja nur die Duplikatsuche und keine Ähnlichkeitssuche.

nopes
04.08.16, 21:06
Jepp, das mit den Duplikaten geht zB so:
Programm um einen "Index" zuerstellen

#!/bin/bash
if [ ! -d "$1" ]; then
echo "usage: ${0} /path/to/dir/to/add/to/index"
exit 1
fi
find "$1" -type f | xargs md5sum >> index
Programm um Duplikate im "Index" zu finden:

#!/bin/bash
if [ ! -f "$1" ]; then
echo "usage: ${0} /path/to/file/to/lookup"
exit 1
fi
cat index | grep $(md5sum "$1" | awk '{print $1}') | awk '{print $2}'
"Demo":

find ./my_data/ -type f | xargs file
./my_data/documents/some_duplicate_text.txt: ASCII text
./my_data/documents/some_text.txt: ASCII text
./my_data/music/some_duplicate_music.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hz
./my_data/music/some_music.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hz
./my_data/images/some_duplicate_image.png: PNG image data, 48 x 48, 8-bit/color RGBA, non-interlaced
./my_data/images/some_image.png: PNG image data, 48 x 48, 8-bit/color RGBA, non-interlaced
./create_index my_data/
./find_dups unknown_music.wav
my_data/music/some_duplicate_music.wav
my_data/music/some_music.wav
./find_dups unknown_doc.pdf
[edit]Die "Programme" sind natürlich nur bedingt gut und können noch etwas mehr "Liebe" gebrauchen, also frohes hacken ;)

fork
04.08.16, 21:17
Für Duplikatssuche gibt's auch fdupes.

nopes
04.08.16, 21:24
:D oder du nimmst halt das, wobei es im Gegensatz zu "meinem" Ansatz (eigentlich hatte mich der fertige Pseudo Code drauf gebracht, dass das ganz schnell gemacht ist ;) - jedenfalls ist der eher auf Dateiebene) mit Verzeichnissen arbeitet - fdupes [ options ] DIRECTORY

Noether
04.08.16, 21:28
Naja, so etwas ist in ein paar Minuten geskriptet, Noether, aber das ist ja nur die Duplikatsuche und keine Ähnlichkeitssuche.

Nein, ich meine Inhaltssuche, denn eine Duplikatsuche wäre es nur wenn es mindestens einen Treffer gibt.
Wenn es keinen Treffer gibt passt es, dann ist die Datei neu.

Edit: Der Ansatz ist aber sehr ähnlich, so das auch geeignet wäre ein Programm zur Auffinden von Duplikaten, das eine Datenbank mit Hashwerten anlegt.
Welche Programme machen das?

nopes
04.08.16, 21:36
whoops typo im Index-Erstellungs-Programm, ist da inzwischen korrigiert (> muss >> sein - damit wird es dann doof, wenn man das gleiche Verzeichnis mehrfach indiziert, tja fehlende Liebe und so ;))

marce
05.08.16, 05:51
Edit: Der Ansatz ist aber sehr ähnlich, so das auch geeignet wäre ein Programm zur Auffinden von Duplikaten, das eine Datenbank mit Hashwerten anlegt.
Welche Programme machen das?
Warum auch immer Du dich so in die Hash-Tabelle verrennst - bis auf das finden von exakten Duplikaten hat das nämlich keinen nachvollziehbaren Grund.

Aber solche Datenbanken legen z.B. tripwire und aide an - allerdings mit komplett anderem Ansatz.

Was Du nach Deiner Beschreibung suchst nennt Desktop-Such-"Maschine", Dokumentenverwaltung, Dokumentenmanagement. Gibt's alles - "ordentlich" für Geld oder auch in mehr oder weniger perfekt für lau...

florian0285
05.08.16, 07:41
Schau dir auch mal fslint an [emoji6]