Apple Produkte (Mac Bug) - Tipps, Tricks, Problemlösungen
Posts 1-8 of 8
-
Thomas Zilch Premium MemberThe 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!
- 10 Jul 2009, 4:11 pm
-
Rolf Bock Premium MemberThe 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
- 10 Jul 2009, 4:24 pm
-
Thomas Zilch Premium MemberThe 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.- 10 Jul 2009, 6:19 pm
-
Evangelia StamatopoulouThe 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.- 10 Jul 2009, 7:00 pm
-
Evangelia StamatopoulouThe 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
- 10 Jul 2009, 10:05 pm
-
Thomas Zilch Premium MemberThe 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
- 11 Jul 2009, 08:16 am
-
Evangelia StamatopoulouThe 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.- 11 Jul 2009, 12:12 pm
-
Fred Gerber Premium Member Group moderatorThe 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ß
- 15 Dec 2009, 08:15 am
