Ich versuche eine Möglichkeit zu finden, in einem bestimmten Verzeichnis nach doppelten Dateien (auch mit unterschiedlichen Namen) zu suchen und diese durch Symlinks zu ersetzen, die auf das erste Vorkommen verweisen. Ich habe es mit versucht, fdupes
aber es listet nur diese Duplikate auf.
Das ist der Kontext: Ich passe ein Symbolthema nach meinen Wünschen an, und ich habe festgestellt, dass viele Symbole, auch wenn sie unterschiedliche Namen und unterschiedliche Speicherorte in ihrem übergeordneten Ordner haben und für unterschiedliche Zwecke verwendet werden, im Grunde gleich sind Bild. Da es überflüssig ist, dieselbe Änderung zwanzig- oder dreissigmal anzuwenden, wenn nur eine wirklich notwendig ist, möchte ich nur ein Bild behalten und alle anderen verknüpfen.
Wenn ich beispielsweise fdupes -r ./
in dem Verzeichnis ausgeführt werde testdir
, werden möglicherweise die folgenden Ergebnisse zurückgegeben:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Angesichts dieser Ausgabe möchte ich nur die Datei behalten file1.png
, alle anderen löschen und durch darauf verweisende Symlinks ersetzen, wobei alle ursprünglichen Dateinamen beibehalten werden. So file2.png
bleibt der Name erhalten, wird aber zu einem Link, file1.png
anstatt ein Duplikat zu sein.
Diese Links sollten nicht auf einen absoluten Pfad verweisen, sondern relativ zum übergeordneten testdir
Verzeichnis sein. dh yetanotherfile.png
wird zeigen auf ../../file1.png
, nicht auf/home/testuser/.icons/testdir/file1.png
Ich interessiere mich sowohl für Lösungen, die eine GUI und CLI beinhalten. Es ist nicht zwingend verwenden fdupes
ich es genannt habe , weil es ein Werkzeug ist , dass ich weiß, aber ich bin offen für Lösungen , die anderen Werkzeuge auch nutzen.
Ich bin mir ziemlich sicher, dass ein Bash-Skript für all das nicht so schwer zu erstellen sein sollte, aber ich bin nicht sachkundig genug, um herauszufinden, wie man es selbst schreibt.
v1.51
(Ubuntu 14.04.2 LTS).