
Ich habe Fotos im Ordner A, sie existieren auch in den Ordnern B und C. Sie haben die gleichen Dateinamen. Wie kann ich sie suchen und aus Ordner A löschen? Ein Perl-Skript oder so etwas wäre ideal, da ich für diese Aufgabe keine Software herunterladen möchte.
Antwort1
Versuchen Sie diesen Befehl:
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
Wie benutzt man?
Schritt 1:Erstellen Sie ein temporäres Verzeichnis, um doppelte Dateien dorthin zu verschieben:
ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
Schritt 2:Legen Sie das Verzeichnis FolderA fest destdir
, aus dem Sie doppelte Fotos löschen möchten.
destdir=/path/to/FolderA
Schritt 3Wechseln Sie per cd in Ihr erstes Quellverzeichnis (OrdnerB) und führen Sie den Befehl aus
cd /path/to/FolderB
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
Schritt 4:Wechseln Sie nun per cd in das nächste Quellverzeichnis (Ordner C) und führen Sie den Befehl erneut aus
cd /path/to/FolderC
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
Ok. Wenn Sie nun den Befehl testen und das Ergebnis sehen, entfernen Sie den echo
Befehl, um die doppelten Fotos in /tmp/ToDelete
das Verzeichnis zu verschieben.
Siehe den Test unten:
$ ls ~/FolderA
1.jpg 2.jpg 6.jpg 7.jpg 8.jpg
$ ls ~/FolderB
3.jpg 4.jpg 5.jpg 7.jpg 8.jpg 9.jpg
$ ls ~/FolderC
6.jpg 7.jpg 8.jpg 9.jpg
$ ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
$ ls /tmp/ToDelete/
$ destdir=~/FolderA
$ cd ~/FolderB
/FolderB$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./8.jpg’ -> ‘/tmp/ToDelete/8.jpg’
removed ‘/home/Fischer/FolderA/./8.jpg’
‘/home/Fischer/FolderA/./7.jpg’ -> ‘/tmp/ToDelete/7.jpg’
removed ‘/home/Fischer/FolderA/./7.jpg’
/FolderB$ cd ~/FolderC
/FolderC$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./6.jpg’ -> ‘/tmp/ToDelete/6.jpg’
removed ‘/home/Fischer/FolderA/./6.jpg’
/FolderC$ ls /tmp/ToDelete/
6.jpg 7.jpg 8.jpg
/FolderC$ ls -l ~/FolderA
1.jpg 2.jpg
/FolderC$ C00L ;)
Und wie funktioniert es?
Wenn Sie in Ihren Ordner B oder Ordner C wechseln und ausführenBefehl „find“, also suchst du nach einer beliebigen Datei darin ( .
siehe aktuelles Verzeichnis) und dann mitcmp-Befehl(wird verwendet, um zwei Dateien Byte für Byte zu vergleichen) Sie vergleichen jede Datei( {}
) in OrdnerB/OrdnerC mit Dateien in destdir
(OrdnerA( $destdir/{}
)). Wenn sie gleich sind, verschieben wir diese Datei(von OrdnerA in das temporäre Verzeichnis in /tmp/ToDelete
) mit dem nächstenmv-Befehl -exec mv "$destdir/{}" "$ToDelete"/ \;
.
Antwort2
Das ProgrammBildduplikate findensollte tun, was Sie verlangen:
Findet optisch ähnliche oder doppelte Bilder
Das Programm ist ein einfaches Perl-Programm und kann von der Kommandozeile aus gestartet werden – ist aber auch als Softwarepaket erhältlich.
Antwort3
Sie könnten das Programm fslint verwenden
es sucht unter anderem nach Duplikaten
fslint kann im Softwarecenter heruntergeladen werden. fslint hat eine Benutzeroberfläche. Wenn Sie das Programm öffnen, geht es auf der ersten Registerkarte um die Suche nach Duplikaten. Sie können den/die Ordner angeben.
Mehr Informationen :Benutzerhandbuch fslint
Antwort4
Da sind vieleDuplikat-FotofinderDienstprogramme, die online verfügbar sind. Manche sind besser als andere, manche sind schneller, manche sind einfach zu bedienen, viele sind kostenlos und bei manchen muss man bezahlen, um die volle Funktionalität freizuschalten.
Führen Sie eine Google-Suche mit den besten Phrasen zum Auffinden doppelter Fotos durch, um herauszufinden, was verfügbar ist, und das für Ihren Bedarf passende Foto zu finden.