<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Verzeichnisse vergleichen mittels Skript</title>
    <link>http://forum.geizhals.at/feed.jsp?id=406719</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re(8): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3300469.html#3300469</link>
      <description>Nun ja...&lt;br&gt;&lt;br&gt;Ich bin bisher über noch keine Script-Aufgabe gestoßen, die mit Shell besser/schneller/einfacher zu lösen wäre als mit Perl... Nun ja, doch:&lt;br&gt;&lt;br&gt;Wenn du ein Shellscript hast, das genauso aussieht wie eine DOS-Batchdatei (also ein i.d.R. lineares Script ohne Verzweigung) - dann nehme ich heute noch SHELL.&lt;br&gt;&lt;br&gt;IMHO ist die Shell aber "saugshissn" auch schon für Standardaufgaben - wie zB dem sprachunabhängig empfohlenen Anlegen von temporären Dateien auf Unixoiden.&lt;br&gt;&lt;br&gt;Arrays braucht man sehr oft - die finde ich in der Shell elend. Assoziative Arrays machen auch sehr oft sinn - die vermisse ich total. Es mag /natürlich/ auch von der verwendeten Shell abhängen - ich habe da nur bei ksh und bash viele Erfahrungen - wobei die Frage bleibt, was man denn stattdessen nehmen sollte. Diese beiden sind am öftesten verwendet, also am ehesten gecacht und COW beim Durchlauf. &lt;br&gt;&lt;br&gt;Das "saubere" einlesen von Dateien ohne auf cat auszuweichen zB finde ich in der bash... häßlich (aber ich stimme 100%ig zu, daß das ausschließlich subjektiver Geschmack ist). Aber ein $(&lt; filename ) empfinde ich als seltsam - drum wohl wenig verwendet.&lt;br&gt;&lt;br&gt;Andere Konzepte finde ich bei der Bash net weit genug durchdacht...&lt;br&gt;so finde ich zB die Ausgabeumleitung auf einen Host via &lt;br&gt;&gt; /dev/tcp/zielhost/zielport &lt;br&gt;sehr gut - allerdings finde ich es unverständlich, daß man nicht genauso ein Listen implementiert hat, also ein &amp;lt; /dev/tcp/localhost/5555&lt;br&gt;&lt;br&gt;Auch daß man für jede Primitivaufgabe extra ein implizites fork/exec machen muß finde ich ungut... Abschließen finde ich die Variablenbehandlung in read-Schleifen als echt schlimm (zumindest in der bash).&lt;br&gt;&lt;br&gt;Die ksh ist da überlegen - sowie bietet sie Coprozesse, die ja noch immer in der bash fehlen - allerdings IMHO sonst eher matt...&lt;br&gt;&lt;br&gt;Nun ja, wie gesagt - für einfache Befehlsabfolgen sind shellscripts echt nett - dazu ist eine Shell dann aber doch wieder zu bloated.&lt;br/&gt;</description>
      <pubDate>Sun, 26 Mar 2006 12:18:21 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3300469.html#3300469</guid>
      <dc:creator>gepeinigter_aon_neukunde</dc:creator>
      <dc:date>2006-03-26T12:18:21Z</dc:date>
    </item>
    <item>
      <title>Re(7): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3300444.html#3300444</link>
      <description>Das ist zu pauschal gesagt. Ich schreibe Scripte/Programme in Bash und in Perl (und manchmal auch in anderen Sprachen). Je nach Situation ist mal das eine vorzuziehen, mal das andere. Grund für einen Flamewar sehe ich nicht, ebensowenig für deine abfällige Bezeichnung für Shellscripts.&lt;br/&gt;</description>
      <pubDate>Sun, 26 Mar 2006 12:08:57 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3300444.html#3300444</guid>
      <dc:creator>juwb</dc:creator>
      <dc:date>2006-03-26T12:08:57Z</dc:date>
    </item>
    <item>
      <title>Re(6): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3293034.html#3293034</link>
      <description>Ach ja - eines noch...&lt;br&gt;&lt;br&gt;Bevor du allzuviel mit der shell herumtust - lies dich lieber in Perl ein (Achtung: Flamewar in Folge möglich).&lt;br&gt;&lt;br&gt;Früher scriptete ich wirklich gerne in der Shell - wenn du aber einmal in Perl drinnen bist, willst mit &lt;i&gt;ekligen, widerlichen, homosexuellen rosa Plüsch-Shellscripts mit Rüschen dran&lt;/i&gt; echt nix mehr zu tun haben &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":-)"/&gt;&lt;br/&gt;</description>
      <pubDate>Thu, 23 Mar 2006 10:50:14 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3293034.html#3293034</guid>
      <dc:creator>gepeinigter_aon_neukunde</dc:creator>
      <dc:date>2006-03-23T10:50:14Z</dc:date>
    </item>
    <item>
      <title>Re(5): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3292975.html#3292975</link>
      <description>Jup, ist mir nach Deinem Post klar geworden. Ich habe zwar schon des öfteren die "-e" Option verwendet, wußte allerdings nicht, woher das kommt. Jetzt ist es klar.&lt;br/&gt;</description>
      <pubDate>Thu, 23 Mar 2006 10:15:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3292975.html#3292975</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-23T10:15:51Z</dc:date>
    </item>
    <item>
      <title>Re(4): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3292970.html#3292970</link>
      <description>Das Test-Kommando brauchst in den "handelsüblichen" Shells (bash/ksh/...) eh net - da geht's so:&lt;br&gt;&lt;br&gt;[ -d "/bubu" ] &amp;&amp; echo "ok" || echo "nok"&lt;br&gt;Liefert nok&lt;br&gt;[ -d "/tmp" ] &amp;&amp; echo "ok" || echo "nok"&lt;br&gt;Liefert ok&lt;br&gt;&lt;br&gt;Die eckigen Klammern sind also ein implizites &lt;i&gt;test&lt;/i&gt;... Die manpage ist aber wichtig um die Optionen kennenzulernen.&lt;br&gt;&lt;br&gt;cu&lt;br&gt;gepeinigter&lt;br/&gt;</description>
      <pubDate>Thu, 23 Mar 2006 10:11:33 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3292970.html#3292970</guid>
      <dc:creator>gepeinigter_aon_neukunde</dc:creator>
      <dc:date>2006-03-23T10:11:33Z</dc:date>
    </item>
    <item>
      <title>Re(3): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3292765.html#3292765</link>
      <description>&lt;blockquote&gt;&lt;em&gt; Gibt's -d oder -f net mehr ?&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Doch gibts noch. Kannte aber "test" nicht &lt;img src="teeth.gif" width="16" height="19" align="absmiddle" alt="|-D"/&gt;&lt;br&gt;&lt;br&gt;Vielen Dank.&lt;br/&gt;</description>
      <pubDate>Thu, 23 Mar 2006 08:00:22 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3292765.html#3292765</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-23T08:00:22Z</dc:date>
    </item>
    <item>
      <title>Re(3): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3292761.html#3292761</link>
      <description>Naja, aber Deine Version hat nicht funktioniert, weil ich eben beim grep einen Fehler erhalten habe. Und was Du mit "sonst mußt Du die Ergebnisse halt in eine Datei schreiben" gemeint hast, ist mir nicht klar. Ich habe den Output von grep ohnehin in eine Datei umgewandelt, aber wenn das Script abbricht, tut sich halt nichts mehr...&lt;br/&gt;</description>
      <pubDate>Thu, 23 Mar 2006 07:58:16 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3292761.html#3292761</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-23T07:58:16Z</dc:date>
    </item>
    <item>
      <title>Re(2): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3290727.html#3290727</link>
      <description>Wieso hast du keine Möglichkeit zwischen Datei und Dir zu unterscheiden ?&lt;br&gt;Gibt's &lt;b&gt;-d&lt;/b&gt; oder &lt;b&gt;-f&lt;/b&gt; net mehr ?&lt;br&gt;&lt;br&gt;Notfalls "man test"&lt;br/&gt;</description>
      <pubDate>Wed, 22 Mar 2006 11:50:02 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3290727.html#3290727</guid>
      <dc:creator>gepeinigter_aon_neukunde</dc:creator>
      <dc:date>2006-03-22T11:50:02Z</dc:date>
    </item>
    <item>
      <title>Re(2): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3290586.html#3290586</link>
      <description>Meine bereits gepostete Variante mit find bezieht Unterverzeichnisse mit ein.&lt;br/&gt;</description>
      <pubDate>Wed, 22 Mar 2006 10:25:58 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3290586.html#3290586</guid>
      <dc:creator>juwb</dc:creator>
      <dc:date>2006-03-22T10:25:58Z</dc:date>
    </item>
    <item>
      <title>Re: Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3290518.html#3290518</link>
      <description>Und weiter gehts...&lt;br&gt;&lt;br&gt;Zwei Verzeichnisse miteinander zu vergleichen funktioniert jetzt. Doch ich würde gerne auch die Unterverzeichnisse mit einbeziehen. Allerdings kriege ich das nicht hin, da ich keine Möglichkeit habe, zwischen einer Datei und einem Verzeichnis zu unterscheiden - somit also auch nicht in das Unterverzeichnis wechseln zu können.&lt;br&gt;&lt;br&gt;Hat vielleicht von euch einer eine Idee?&lt;br/&gt;</description>
      <pubDate>Wed, 22 Mar 2006 09:54:19 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3290518.html#3290518</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-22T09:54:19Z</dc:date>
    </item>
    <item>
      <title>Re(2): Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3290440.html#3290440</link>
      <description>Danke für den Tipp. Mir war schon klar, daß ich Pfadnamen vergleiche, und darauf hätte meine Frage auch abzielen sollen: Wie kriege ich den Pfad aus den Dateinamen raus?&lt;br&gt;&lt;br&gt;Aber jetzt funktioniert es. Danke nochmals.&lt;br/&gt;</description>
      <pubDate>Wed, 22 Mar 2006 09:13:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3290440.html#3290440</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-22T09:13:51Z</dc:date>
    </item>
    <item>
      <title>Re: Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3285659.html#3285659</link>
      <description>Warum so kompliziert? Wozu gibt es denn den diff befehl?&lt;br&gt;&lt;a href="http://www.ss64.com/bash/diff.html" rel="noopener" target="_blank"&gt;http:/&lt;wbr/&gt;/&lt;wbr/&gt;www.ss64.com/&lt;wbr/&gt;bash/&lt;wbr/&gt;diff.html&lt;/a&gt; &lt;br/&gt;</description>
      <pubDate>Mon, 20 Mar 2006 11:37:00 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3285659.html#3285659</guid>
      <dc:creator>Cereal_Poster</dc:creator>
      <dc:date>2006-03-20T11:37:00Z</dc:date>
    </item>
    <item>
      <title>Re: Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3285562.html#3285562</link>
      <description># quelldateien sammeln&lt;br&gt;cd $QUELLPFAD&lt;br&gt;QUELLDATEIEN="`find`"&lt;br&gt;cd -&lt;br&gt;&lt;br&gt;# zieldateien sammeln&lt;br&gt;cd $ZIELPFAD&lt;br&gt;ZIELDATEIEN="`find`"&lt;br&gt;cd -&lt;br&gt;&lt;br&gt;# gemeinsame dateien ausgeben&lt;br&gt;echo "$QUELLDATEIEN" | grep -xF -- "$ZIELDATEIEN"&lt;br&gt;&lt;br&gt;Falls da viele Dateien drin sind, kann es sein, daß grep dir wegen zu langer Argumentliste den Dienst verweigert. In dem Fall musst du das Zeug halt in Dateien schreiben.&lt;br&gt;&lt;br&gt;Falls du den for-loop in Bash beibehalten willst, musst du hier mit globbing arbeiten (for f in *). Der Fehler in deinem Script ist, dass du Pfadnamen vergleichst, und nicht etwa den Inhalt dieser Verzeichnisse.&lt;br&gt;&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 20 Mar 2006 10:41:22 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3285562.html#3285562</guid>
      <dc:creator>juwb</dc:creator>
      <dc:date>2006-03-20T10:41:22Z</dc:date>
    </item>
    <item>
      <title>Verzeichnisse vergleichen mittels Skript</title>
      <link>http://forum.geizhals.at/t406719,3285334.html#3285334</link>
      <description>Tja, das dürfte für viele hier eine Leichtigkeit sein, aber ich komme nicht dahinter. Wie kann ich mittels eines shell-Skripts die Inhalte zweier Verzeichnisse vergleichen und gleiche Dateien in einem Log-File speichern?&lt;br&gt;Ich schaffe es nicht, den Dateinamen in einer Variablen im Skript zu speichern, damit ich diese dann vergleichen kann.&lt;br&gt;&lt;br&gt;Falls es jemanden interessiert, ist hier das Listing, soweit ich es bis jetzt habe:&lt;br&gt;&lt;br&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;PATH=/bin:/usr/bin&lt;br&gt;&lt;br&gt;FIRSTPATH="/home/user/Documents/Sicherung/ /home/user/Documents/Sicherung/ebooks/"&lt;br&gt;SECONDPATH="/Sicherung/"&lt;br&gt;LOGFILE="/home/user/Documents/Vergleich-Log"&lt;br&gt;count=1&lt;br&gt;&lt;br&gt;echo -n "Removing old log files..."&lt;br&gt;if [ ! -e "$LOGFILE" ]&lt;br&gt;then&lt;br&gt;	echo "No logfile present. Deleting old files skipped."&lt;br&gt;else&lt;br&gt;	rm $LOGFILE 2&gt; /dev/null&lt;br&gt;	if [ ! -e "$LOGFILE" ]&lt;br&gt;	then&lt;br&gt;		echo "Deletion complete."&lt;br&gt;	else&lt;br&gt;		echo "Error while deleting old logfiles."&lt;br&gt;		echo "Continue to compare anyway."&lt;br&gt;	fi&lt;br&gt;fi&lt;br&gt;&lt;br&gt;for path in $FIRSTPATH&lt;br&gt;do&lt;br&gt;	for path1 in $SECONDPATH&lt;br&gt;	do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		echo "File comparison on $FILE and $FILE1" &gt;&gt; $LOGFILE&lt;br&gt;		FILE=$path&lt;br&gt;		FILE1=$path1&lt;br&gt;		if [ "$FILE" == "$FILE1" ]&lt;br&gt;		then&lt;br&gt;			echo FILE1 &gt;&gt; $LOGFILE&lt;br&gt;		fi&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	done&lt;br&gt;done&lt;br&gt;&lt;br&gt;echo&lt;br&gt;echo "System comparison complete, status: $?"&lt;br&gt;&lt;br&gt;exit&lt;br/&gt;</description>
      <pubDate>Mon, 20 Mar 2006 08:54:14 GMT</pubDate>
      <guid>http://forum.geizhals.at/t406719,3285334.html#3285334</guid>
      <dc:creator>Darth Maul</dc:creator>
      <dc:date>2006-03-20T08:54:14Z</dc:date>
    </item>
  </channel>
</rss>
