Konvertieren in .tbz oder Verwenden anderer Methoden zum Ermitteln des Unterschieds

Konvertieren in .tbz oder Verwenden anderer Methoden zum Ermitteln des Unterschieds

Ich habe zwei Ordner: Ordner A – enthält insgesamt 1786 DM4-Dateien. Ordner B – enthält insgesamt 2131 TBZ-Dateien (Archivdateien der DM4s, die in Ordner A und B verfügbar sind) sowie 124 DM4-Dateien, die sich nicht in Ordner A befinden.

Ziel ist es, alle dm4s in einem Ordner zu haben und sicherzustellen, dass keines der dm4s fehlt, die eine TBZ-Datei in Ordner B haben. Wenn ich jedoch alle fehlenden 124 dm4-Dateien von Ordner B nach A kopiere, werden 1910 DM4-Dateien hinzugefügt. Mein Ordner B zeigt jedoch, dass ich 2131 TBZ habe. Das bedeutet, dass ich die Namen der verbleibenden 221 dm4-Dateien/TBZ-Dateien kennen muss, die in Ordner B vorhanden sind, damit ich weiß, dass sie in meiner Liste der dm4s fehlen.

Wie kann ich am schnellsten herausfinden, welche dm4s/tbz-Datei mir in diesem Fall fehlt?

Antwort1

Um sicherzugehen, dass ich das richtig verstehe: Ist das richtig?

Sie haben 2131 .tbz-Dateien und jede sollte eine entsprechende .dm4-Datei haben, z. B. „example-file-09.tbz“ „example-file-09.dm4“. Ihnen fehlen jedoch einige der entsprechenden dm4-Dateien und Sie müssen herausfinden, welche das sind.

Vorausgesetzt, das ist richtig, sollte es funktionieren (vorausgesetzt, Ihre Dateinamen enthalten keine Leerzeichen).

dm4_files="$(find A -name '*.dm4')"
for file in $(find B -name '*.tbz'); do 
  # || is a logical or operator; bash will only execute the right side if the left side fails (returns a non-zero exit code)
  echo -e "$dm4_files" | grep -q "$(basename $file .tbz).dm4" || echo "Missing $(basename $file .tbz).dm4"
done

Bearbeiten: Anweisungen zum Ausführen aufgrund schlechter Kommentarformatierung hinzufügen

So führen Sie es von einem Terminal aus aus:

  1. Ändern Sie A und B oben in die vollständigen Pfade zu den betreffenden Verzeichnissen (alternativ wechseln Sie mit cd zu dem Verzeichnis, das beide enthält).
  2. Fügen Sie die Befehle ein

So führen Sie die Ausführung über ein Skript aus:

  1. Legen Sie die Befehle in eine Datei mit einem Namen wie check-dm4.sh im Verzeichnis mit A und B (das Suffix .sh hat keine Funktion, ist aber für Shell-Skripte üblich).
  2. Fügen Sie die folgende Zeile oben in der Datei ein (erste Zeile) #!/bin/bash
  3. Markieren Sie die Datei als ausführbar (chmod +x check-dm4.sh oder mit Rechtsklick->Eigenschaften/wie auch immer Ihre Distribution es nennt) 4. Führen Sie die Datei aus

verwandte Informationen