Liste von Dateien eines Verzeichnisses abarbeiten

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von leok, 19.02.2007.

  1. leok

    leok Grünschnabel

    Dabei seit:
    19.02.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,
    stundenlang im Forum und sonstwo gesucht, aber immer noch kein Schritt weiter. Gestehe: bin blutiger Anfänger.
    Die Lage: ich habe ein C-Programm, dass mir .buf Dateien dekodiert und in .txt (z.B. >test.txt) umwandeln kann. Die .buf Ausgangsdateien haben das Format 20061130_0521_abcd14_56636_ath.buf, wobei die ersten 13 Zeichen Jahr-Monat-Tag_Stunde-Minute darstellen. Der Rest der Dateibezeichnung ist willlkürlich. In einem Folder stehen mehrere hundert dieser Dateien, die eindeutig über die Zeitangabe im Filenamen ansprechbar sind. Ich will die Dateien nun automatisiert eine nach der anderen mittels des C-Programms dekodieren lassen und den output in .txt Dateien schreiben lassen, die 20061130_0521_abcd14_56636_ath usw. von der Eingabedatei übernehmen sollen.
    Habt ihr dazu nen Tip, wo ich am besten anfangen kann??(
    Vielen großen Dank!

    PS: bin/bash
     
  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. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wenn ich Dich richtig verstehe, sollte

    Code:
    for i in [0-9]*; do cprogi ${i%.buf}; done
    
    im Verzeichnis aufgerufen, in dem die Files liegen, funktionieren.
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Code:
    for i in [0-9]*.buf ; do cprogi i > ${i%buf}txt; done
    
    damit die Ausgabe in eine .txt-Datei umgeleitet wird.
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Yep, so kann man's auch auslegen. Das ist das Problem bei einer unvollständigen oder zweideutigen Beschreibung. ;)
     
  6. leok

    leok Grünschnabel

    Dabei seit:
    19.02.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Meine .sh-Datei mit den folgenden Befehlen, liegt im gleichen Ordner wie das Programm und die zu dekodierenden Dateien.

    #!/bin/bash
    for i in [0-9].buf ; do test_bufr i > ${i%buf}txt; done

    Beim Ausführen der .sh kommt die Fehlermeldung "cannot read input file". Es wird eine [0-9].txt angelegt, die logischerweise nach dieser Fehlermeldung leer ist. Hab ich da was vergessen? Macht es evtl. einen Unterschied, ob vor der Datumsangabe noch Text steht (z.B. test_20061111_1111_...)?
    Das C-Programm läuft mit einer Testdatei in diesem Verzeichnis fehlerfrei.

    Vielen Dank schon mal!
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Yep hast was vergessen, ich sag aber nicht was... ;)

    edit: @supersucker - Arg, Spielverderber... ;)
     
  8. #7 supersucker, 20.02.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Du hast da ein paar Zeichen vergessen....:D

    Code:
    for i in [0-9]*.buf ; do cprogi i > ${i%buf}txt; done
    vs.

    Code:
    for i in [0-9].buf ; do test_bufr i > ${i%buf}txt; done
    [0-9]*.buf

    BTW: Die Umleitung ">" in eine neue Textdatei brauchst du nur wenn dein C-Programm das nicht von alleine macht.
     
  9. #8 Wolfgang, 20.02.2007
    Zuletzt bearbeitet: 20.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Fällt etwas auf?

    Da fehlt ein $
    Mein Vorschlag:
    Code:
    for i in [0-9]*.buf ; do cprogi [b]$i[/b] > ${i/buf/txt}; done
    Gruß Wolfgang
     
  10. leok

    leok Grünschnabel

    Dabei seit:
    19.02.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,
    ich danke euch für eure Hilfe. Das kleine Puzzelchen war wohl aber nicht dafür verantwortlich. Werde weiterhin mit "cannot read input file"abgespeist :-(
    Habe brav eure Zeil:
    for i in [0-9]*.buf ; do test_bufr $i > ${i/buf/txtf}; done
    eingetippt.
    Habt ihr noch eine Idee, woran das liegen könnte?
     
  11. #10 Wolfgang, 20.02.2007
    Zuletzt bearbeitet: 20.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Erstens:
    Hast du Leserechte für die Dateien?
    Zweitens was gibt denn folgendes aus:
    Code:
    for i in *buf; do echo "$i"; done
    Eventuell haben die Dateien Leerzeichen im Namen?
    Dann solltest du find mit xargs verwenden, was ohnehin bei sehr vielen Dateien angebracht ist.

    Gruß Wolfgang
    PS Man sollte übrigens möglichst immer Variablen quoten-> "$i" statt $i!
     
  12. leok

    leok Grünschnabel

    Dabei seit:
    19.02.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Dankschön,
    Geprüft: Leerzeichen sind nicht im Dateinamen. Lese-und Schreibrechte habe ich alle.
    Wenn ich deinen code eingebe, werden mir die Namen der zu dekodierenden Dateien ausgegeben
    z.B.
    pr1_amsu_20070131_2346_noaa17_23934_kan.buf
    pr1_amsu_20070131_2346_noaa18_08765_ath.buf

    ??
     
  13. #12 Wolfgang, 20.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Wenn du nun statt echo dein Programm ausführst und die Umleitung machst geht das nicht?
    Wir reden hier aber nicht etwa von cygwin oder solch Hilfskrücken und von *nix-system oder?
    Nur um das mal gleich auszuschließen.

    Davon gehen wir hier im Unixboard eigentlich aus.

    Gruß Wolfgang
     
  14. leok

    leok Grünschnabel

    Dabei seit:
    19.02.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,
    danke, von cygwin habe ich genug;-)
    Der Fehler lag im Detail (danke für den Hinweis mit dem echo).
    Statt mit:
    for i in [0-9]*.buf ; do test_bufr $i > ${i/buf/txtf}; done
    funktioniert es mit:
    for i in *buf; do test_bufr "$i"> ${i/buf/txtf}; done

    Ich dank dir riesig!
    Ciao
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Die Hälfte des Threads hätte man sich sparen können, wenn man sich etwas Mühe bei der Problembeschreibung geben würde. Im ersten Beitrag steht:

    Jetzt schreibst Du, dass Sie so aussehen:

    Sorry, aber sowas regt mich auf. Die Lösung lag also nicht am kleinen Detail der fehlenden Hochkommas.
     
  17. #15 Wolfgang, 20.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Xanti,
    Problembeschreibung scheint bei Vielen das Hauptproblem zu sein.

    Du hast Recht, aber ohne dem $ hätte es auch nicht geklappt.

    Gruß Wolfgang
     
Thema:

Liste von Dateien eines Verzeichnisses abarbeiten

Die Seite wird geladen...

Liste von Dateien eines Verzeichnisses abarbeiten - Ähnliche Themen

  1. perl script, das Dateien aus einer Liste löscht

    perl script, das Dateien aus einer Liste löscht: Hallo ich habe hier ein perl script, dass aus einer vorher generierten Liste, die so aus sieht 31edb809ff19486daf60e66cc3ab1a7d...
  2. Dateien eines Verzeichises + Inhalt in Liste

    Dateien eines Verzeichises + Inhalt in Liste: Hi, wie kann in der shell bestimmte dateien eines Verzeichnisses und deren Inhalt in eine "zweispaltige" liste scheiben (erste Spalte =...
  3. sed mit Liste von Dateien

    sed mit Liste von Dateien: Hi, ich möchte ein Skript schreiben mit dem ich nach einem Text in mehreren Dateien suchen kann und diesen durch einen neuen ersetzen. Bin...
  4. Erzeugen eines HTML-File zur Verwaltung einer Liste von Bild-Dateien

    Erzeugen eines HTML-File zur Verwaltung einer Liste von Bild-Dateien: Hallo Ich bin ein Linux Jünger und wir haben gerade als Einstieg angefangen mit Shellscripten. Dabei soll ein HTML-File zur Verwaltung einer...
  5. Dateien auflisten und "verarbeiten"

    Dateien auflisten und "verarbeiten": Hi! Ich habe Dateien in der Form Zahl-Name-Zahl.ps in einem Verzeichnis, in dem sich auch nur diese Dateien befinden. Nun möchte ich ein Script...