Früher habe ich Daten von Aufzeichnungsmedien wie Digitalkameras und Action-Cams (USB-Speicher, SD-Karte usw.) auf eine andere externe SSD mit großer Kapazität kopiert und gespeichert, aber die verbleibende Menge der externen SSD geht zur Neige. .. Die externe SSD scheint doppelte Daten zu enthalten, daher möchte ich sie löschen. Es sind doppelte Dateien aufgetreten
――Nach dem Kopieren auf eine externe SSD habe ich sie hinzugefügt, bevor ich die Kopierquelldatei auf dem Aufzeichnungsmedium gelöscht und dann erneut gesichert habe.
Es scheint, dass die Ursache ist. Ich habe beschlossen, ein Skript zu schreiben, da es schwierig ist, den Inhalt der beiden Verzeichnisse zu überprüfen, ohne zwischen Groß- und Kleinschreibung zu unterscheiden.
Wenn Sie mit den beiden Verzeichnissen ausführen, die Sie als Argumente für jedes Unterverzeichnis, für jede Datei, jedes Verzeichnis und jeden symbolischen Link vergleichen möchten
Vergleichen Sie den Zeitstempel mit der Dateigröße. Vergleichen Sie für Dateien gleicher Größe die Funktion filecmp.cmp (..., flat = False)
.
Zeigen Sie das Ergebnis des Vergleichs mit dem folgenden Symbol vor dem Dateinamen an.
--Wenn sich im Vergleichsziel eine Datei mit demselben Namen befindet, repräsentiert das Symbol (>
, =
, <
) den Zeitstempel (mtime) und das Symbol (++
, - des Inhaltsvergleichsergebnisses" 3 Bytes kombinieren
,! =
,==
,
,!!
)
Zum Beispiel ist "===" "gleicher Zeitstempel und gleicher Inhalt", "> ++" ist "neuer und größer als die Datei mit demselben Namen in dem zu vergleichenden Verzeichnis" und "=! =" Ist "zu vergleichen". Der Zeitstempel und die Dateigröße sind identisch mit der Datei mit demselben Namen im Verzeichnis, aber der Inhalt (die Daten) sind unterschiedlich. " Im Fall einer symbolischen Verknüpfung ist '= (zwei leere Zeichen)' ein Symbol dafür, dass "der Zeitstempel und der Verbindungszielpfad identisch sind", und '= !!' ist ein Symbol dafür, dass "der Zeitstempel gleich ist, der Verbindungszielpfad jedoch unterschiedlich ist". Werden.
Ausführungsbeispiel
% ./cmp_dirtree ./data0 ./data1
### ========================================
1: ./data0
2: ./data1
### ========================================
###-----------------< M4ROOT >--------------------
1: ./data0/M4ROOT
2: ./data1/M4ROOT
### Sub directories: ---
1: =++ : 2019/02/09 12:43:35 : 952 : CLIP
2: =-- : 2019/02/09 12:43:35 : 476 : CLIP
1: === : 2019/02/09 12:43:35 : 68 : GENERAL
2: === : 2019/02/09 12:43:35 : 68 : GENERAL
(Auf halbem Weg weggelassen)
### File lists: ---
1: >== : 2019/11/05 03:47:45 : 6148 : .DS_Store
2: <== : 2019/11/05 01:10:13 : 6148 : .DS_Store
1: >++ : 2019/11/02 19:09:34 : 5122 : MEDIAPRO.XML
2: <-- : 2019/07/01 19:07:35 : 2595 : MEDIAPRO.XML
1: >== : 2019/11/02 19:09:34 : 7 : STATUS.BIN
2: <== : 2019/07/01 19:07:35 : 7 : STATUS.BIN
###-----------------< M4ROOT/CLIP >--------------------
1: ./data0/M4ROOT/CLIP
2: ./data1/M4ROOT/CLIP
### File lists: ---
1: === : 2019/02/09 14:53:23 : 1878686635 : C0001.MP4
2: === : 2019/02/09 14:53:23 : 1878686635 : C0001.MP4
1: === : 2019/02/09 14:53:23 : 2008 : C0001M01.XML
2: === : 2019/02/09 14:53:23 : 2008 : C0001M01.XML
(Auf halbem Weg weggelassen)
1: === : 2019/07/01 19:07:35 : 7627022896 : C0006.MP4
2: === : 2019/07/01 19:07:35 : 7627022896 : C0006.MP4
1: === : 2019/07/01 19:07:35 : 2009 : C0006M01.XML
2: === : 2019/07/01 19:07:35 : 2009 : C0006M01.XML
1: : 2019/07/28 14:15:53 : 15709053750 : C0007.MP4
2: ! : ~~
1: : 2019/07/28 14:15:53 : 2008 : C0007M01.XML
2: ! : ~~
(Folgendes wird weggelassen)
Wenn Sie eine große Anzahl von Verzeichnissen und Dateien vergleichen möchten, können Sie doppelte Dateien leicht finden, indem Sie mit "./cmp_dirtree ./data0 ./data1 | grep -e". == "filtern. ..
Recommended Posts