kleines vergleichsproblem

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von jurgen_xf, 20.06.2011.

  1. #1 jurgen_xf, 20.06.2011
    jurgen_xf

    jurgen_xf Mitglied

    Dabei seit:
    19.10.2010
    Beiträge:
    29
    Zustimmungen:
    0
    Hallo
    Ich möchte eine Liste mit Dateinamen mit einem Ordnerinhalt vergleichen und die Dateien, die sich nicht im Ordner befinden in eine logdatei wegschreiben.

    Code:
    folder=/home/diff
    List='ACD ABF EHX'
    for i in $List; 
       do   
       diff $folder *${i}*;  
       done
    So fast funktioniert es,- ich bekomme im Terminal die ausgabe:
    (z.B *ACD*: No such file or directory) aber auch eine Fehlermeldung:
    "two filename arguments required"?!?!
    Wie kann ich die Dateinamen, die in dem Order fehlen in eine logfile wegschreiben und zwar so dass nur der Name darinsteht, wie er in der $List definiert ist (ohne *)???

    Besten Dank für Vorschläge
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 floyd62, 20.06.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Was soll "diff" hier genau bringen? Versuch doch mal so etwas:
    Code:
    folder=/home/diff
    List='ACD ABF EHX'
    for i in $List; do   
       [ -f "$folder/$i" ] || echo $i  
    done >log
    
    Gruss, A.
     
  4. #3 jurgen_xf, 20.06.2011
    jurgen_xf

    jurgen_xf Mitglied

    Dabei seit:
    19.10.2010
    Beiträge:
    29
    Zustimmungen:
    0
    hier gibt er letztendlich nur die Liste untereinander aus, die ich vorher schon definiert habe. Ich möchte aber Dateien finden, die in der List stehen aber sich nicht im Verzeichnis befinden, dachte dafür ist diff relativ gut geeignet

    Gruss J.
     
  5. #4 floyd62, 20.06.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hast du das auch getestet? mit
    Code:
    [ -f "$folder/$i" ] || echo $i
    
    sollte die Shell überprüfen, ob die aktuelle Datei $i im Verzeichnis $folder existiert, und nur wenn das nicht der Fall ist, den Dateinamen ausgeben.

    Diff kannst du verwenden, um den Inhalt zweier Dateien (oder Verzeichnisse) zu vergleichen; ein Vergleich einer Liste (als String) mit einem Verzeichnis funktioniert damit m.E. wohl eher nicht ...

    Gruss, A.
     
  6. #5 jurgen_xf, 20.06.2011
    jurgen_xf

    jurgen_xf Mitglied

    Dabei seit:
    19.10.2010
    Beiträge:
    29
    Zustimmungen:
    0
    Vielen Dank für die Hilfe
    Ich habe es getestet und die ausgabe ist exakt die definierte $List. Der Dateiname, den ich in der Liste definiert habe is nicht der vollständige Name, kann es daran liegen dass es nicht funktioniert (habe es auch mit *${i}* versucht aber funktioniert auch nicht so wirklich) ???
    Bspl.: List='ACD' -> Dateiname im Verzeichnis : 20110620_ACD_INCOMING.txt
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 floyd62, 20.06.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    OK, deine $List enthält also nicht die vollständigen Namen, sondern nur Substrings ... damit funktioniert der o.a. Ansatz natürlich nicht; dann könnte so etwas eher das Gewünschte liefern:
    Code:
    folder=/home/diff
    List='ACD ABF EHX'
    for i in $List; do   
       ls $folder/*$i* >/dev/null 2>&1 || echo $i  
    done >log
    
    Gruss, A.
     
  9. #7 jurgen_xf, 21.06.2011
    jurgen_xf

    jurgen_xf Mitglied

    Dabei seit:
    19.10.2010
    Beiträge:
    29
    Zustimmungen:
    0
    Genau das habe ich gesucht. Vielen Dank für die Hilfe!!!

    Gruss J.
     
Thema:

kleines vergleichsproblem

Die Seite wird geladen...

kleines vergleichsproblem - Ähnliche Themen

  1. Suche kleines Live OS

    Suche kleines Live OS: Hallo, Ich suche ein kleines Live OS um zu sehen ob der Prozessor hochtaktet. Wie ist das zu realisieren? Hintergrund: Bei einem Dell Vostro...
  2. WRTnode: kleines Entwicklerboard mit WiFi und OpenWRT

    WRTnode: kleines Entwicklerboard mit WiFi und OpenWRT: Die Entwickler des WRTNode haben in China eine erste Beta-Version ihres preiswerten Entwicklerboards verkauft. Der WRTnode ist ein winziger...
  3. Android 4.3 - kleines Update mit interessanten Funktionen

    Android 4.3 - kleines Update mit interessanten Funktionen: Am 24.7. lud Googles Android-Chef Sundar Pichai zu einem Presse-Frühstück in New York, bei dem unter anderem auch Android 4.3 »Jelly Bean«...
  4. OLinuXino A13: kleiner Rechner für kleines Geld

    OLinuXino A13: kleiner Rechner für kleines Geld: Der bulgarische Elektronikhersteller Olimex bietet mit dem OLinuXino A13 einen kleinformatiges Motherboard an, das für viele Basteleien und...
  5. A13-OLinuXino: kleiner Rechner für kleines Geld

    A13-OLinuXino: kleiner Rechner für kleines Geld: Der bulgarische Elektronikhersteller Olimex bietet mit dem OLinuXino A13 einen kleinformatiges Motherboard an, das für viele Basteleien und...