Apple Produkte (Mac Bug) - Tipps, Tricks, Problemlösungen

Apple Produkte (Mac Bug) - Tipps, Tricks, Problemlösungen

Posts 1-8 of 8
  • Thomas Zilch
    Thomas Zilch    Premium Member
    The company name is only visible to registered members.
    Vergleich von Verzeichnissen?
    Hallo zusammen,

    ich möchte regelmäßig zwei Verzeichnisse meines Mac vergleichen. Beide Verzeichnisse enthalten Bilddateien, die (meistens) den gleichen Namen, aber immer unterschiedliche Dateiendungen haben. Ich möchte nun herausbekommen, welche der Dateien ausschließlich in einem der Verzeichnisse vorhanden sind. Dabei soll das Vergleichskriterium nur der "vordere Teil" des Dateinamens sein, die Dateiendung soll nicht in den Vergleich einbezogen werden.

    Beispiel:

    Verzeichnis A enthält:
    2.nef
    3.nef
    4.nef
    5.nef

    Verzeichnis B enthält:
    1.dng
    2.dng
    3.dng
    4.dng
    5.dng

    Vergleicht man nun Verzeichnis A mit B, so soll das Ergebnis sinngemäß "1.* ist nur in Verzeichnis B enthalten" sein.

    Gibt es für diese Aufgabe eine automatisierbare Lösung? Evtl. ein Script o.ä.? Ich setze auch ChronoSync ein, habe aber noch nicht herausgefunden, wie man eine Regel erstellen könnte, die diese Aufgabe löst.

    Für hilfreiche Tipps wäre ich sehr dankbar!
  • Rolf Bock
    Rolf Bock    Premium Member
    The company name is only visible to registered members.
    Re: Vergleich von Verzeichnissen?
    Ich bin mir nicht sicher, ob Compare Folders das kann, aber ein Blick ist es wert:
    http://www.infinitenexus.com/cf/

    __
    bo
  • Thomas Zilch
    Thomas Zilch    Premium Member
    The company name is only visible to registered members.
    Re^2: Vergleich von Verzeichnissen?
    Hallo,

    danke für die Rückmeldung!

    Ich habe zwischenzeitlich in einem anderen Forum den Tipp bekommen, das Problem mit dem Apple Automator zu lösen. Unter http://www.completedigitalphotography.com/Features/OtherAuto... die Aktion "CompareFoldersGerman" herunterladen und in den Automator importieren. Dann mit den eingebauten Automator-Aktionen "Angegebene Finder-Objekte abfragen" und z.B. "Ergebnisse anzeigen" in der u.g. Reihenfolge zu einem Workflow verknüpfen.

    1. Aktion Angegebene Finder-Objekte abfragen: Hier die beiden zu vergleichenden Verzeichnisse eintragen
    2. Aktion CompareFoldersGerman: Häkchen bei "Ignore file extensions" setzen
    3. Aktion Ergebnisse anzeigen

    Eben getestet, funktioniert bestens :-)

    Bei Interesse kann ich den Workflow gerne per E-Mail versenden.

    Viele Grüße,
    Thomas Zilch
    This post was modified on 10 Jul 2009 at 06:20 pm.
  • Evangelia Stamatopoulou
    Evangelia Stamatopoulou
    The company name is only visible to registered members.
    Re^3: Vergleich von Verzeichnissen?
    Automator ist natürlich Klasse, sollte man aber Lust haben es im Terminal zu scripten, hier ein Versuch...
    ---

    #!/bin/bash
    echo comparing 2 dirs
    cd /Users/Vicky/Desktop/A # first dir
    for f in *.nef
    do
    cd /Users/Vicky/Desktop/B #second dir

    if [ ! -f "${f%.nef}.dng" ]
    then
    echo "${f%.nef}" is missing
    fi
    done

    ---

    Gruss :-)
    This post was modified on 10 Jul 2009 at 07:09 pm.
  • Evangelia Stamatopoulou
    Evangelia Stamatopoulou
    The company name is only visible to registered members.
    Re^4: Vergleich von Verzeichnissen?
    Voriger Skript prüfte nur vom A nach B, und nicht umgekehrt... Nun das ganze auch zurück...und mit Variablen

    ---
    #!/bin/bash
    echo comparing 2 dirs
    ############
    firstEnding=nef
    secondEnding=dng
    firstPath=/Users/Vicky/Desktop/A
    secondPath=/Users/Vicky/Desktop/B
    ############

    cd $firstPath # first dir
    for f in *.$firstEnding
    do
    cd $secondPath #second dir

    if [ ! -f "${f%.$firstEnding}.$secondEnding" ]
    then
    echo "${f%.$firstEnding}" is missing in $secondPath
    fi
    done

    # compare now B to A
    for f in *.$secondEnding
    do
    cd $firstPath

    if [ ! -f "${f%.$secondEnding}.$firstEnding" ]
    then
    echo "${f%.$secondEnding}" is missing in $firstPath
    fi
    done
  • Thomas Zilch
    Thomas Zilch    Premium Member
    The company name is only visible to registered members.
    Re^5: Vergleich von Verzeichnissen?
    Hallo,

    das bash-Script ist klasse und m.E. in diesem Fall eine echte Alternative zum Automator, weil es klein, schlank und schnell ist.
    Da ich die genannte Aufgabe aber regeläßig in unterschiedlichen Verzeichnissen lösen muss, sehe ich hier den Automator leicht im Vorteil, da dort man über die erste Aktion (s. mein zweites Posting) die betreffenden Verzeichnisse relativ bequem auswählen kann.

    Schönes Wochenende!

    Thomas Zilch
  • Evangelia Stamatopoulou
    Evangelia Stamatopoulou
    The company name is only visible to registered members.
    Re^6: Vergleich von Verzeichnissen?
    klar, der vorige Skript hatte die Ordnerpfade fest im Code.... Man kann aber im Skript auch eine Parameterübergabe implementieren... und beliebig kürzer schreiben

    chmod 744 auf den Skript
    Und zur Anwendung...
    wirft man die Skriptdatei im Terminal, Leerzeichen, dann wirft man den ersten Ordner ins Terminal, Leerzeichen, tippt man das erste file ending (nef), Leerzeichen, dann auch den zweiten Ordner ins Terminal, Leerzeichen und das zweite file ending.

    Übergibt man zu wenige Parametern, oder keine gütlige Ordnerpfaden meckert der Skript passend und bricht ab.
    ----

    #!/bin/bash
    echo comparing 2 dirs
    ############
    #echo $1 firstEnding
    #echo $2 firstPath
    #echo $3 secondEnding
    #echo $4 secondPath
    ############
    if [ ! "$4" ]
    then
    echo "Script exiting... needs 4 parameters in the following order: First Path First Ending Second Path Second Ending"
    exit
    fi
    if [ ! -d "$1" ]
    then
    echo "1st parameter must be an existing dir"
    exit
    fi
    if [ ! -d "$3" ]
    then
    echo "3rd parameter must be an existing dir"
    exit
    fi

    cd $1 # first dir
    for f in *.$2
    do
    cd $3 #second dir

    if [ ! -f "${f%.$2}.$4" ]
    then
    echo "${f%.$2}" is missing in $3
    fi
    done

    # compare now second dir to first
    for f in *.$4
    do
    cd $1

    if [ ! -f "${f%.$4}.$2" ]
    then
    echo "${f%.$4}" is missing in $1
    fi
    done
    echo "comparison done"
    This post was modified on 11 Jul 2009 at 01:40 pm.
  • Fred Gerber
    Fred Gerber    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^7: Vergleich von Verzeichnissen?
    Hallo,

    die Antwort ist zwar etwas spät, aber es gibt wohl eine schnellere Lösung. Diese nutzt das Kommando "find" welches ab einem Start-Verzeichniss alle Untereinträge findet. Das find wird für beide Verzeichnisse durchgeführt und dann werden beide Ergebnisse sortiert. Mit dem Kommando "diff" kann nun direkt ein Vergleich der beiden Resultate durchgeführt werden. Die neuen Dateien im 2. Verzeichnis werden mit dem grep ">" herausgefiltert (mit grep "<" erhält man die Dateien, die neu im 1. Verzeichnis sind).

    Hier der Code (rein auf Funktionalität beschränkt).

    cd $1
    find . 2> /dev/null | sort > ${TMPDIR}/a.txt
    cd - > /dev/null
    cd $2
    find . 2> /dev/null | sort > ${TMPDIR}/b.txt
    cd - > /dev/null
    diff ${TMPDIR}/a.txt ${TMPDIR}/b.txt | grep ">" | cut -c3- # hole alle neuen aus Verzeichniss 2
    rm ${TMPDIR}/a.txt ${TMPDIR}/b.txt # aufräumen

    Der Aufruf erfolgt nun mit
    script dir1 dir2

    Gruß