Frage zu find

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Der_Wolf, 22.09.2008.

  1. #1 Der_Wolf, 22.09.2008
    Der_Wolf

    Der_Wolf Jungspund

    Dabei seit:
    23.07.2008
    Beiträge:
    13
    Zustimmungen:
    0
    Hallo,

    ich habe ein Problem mit find.

    Folgende Ausgangssituation. Ich habe ein Verzeichniss welches neben sehr vielen anderen Dateien auch Dateien mit der Endung vid enthält.

    Um diese *.vid Dateien in ein allgemeingültiges Videoformat zu überführen sind mehere Schritte nötig.

    Einer davon ist aus der *.vid Datei viele *.pgm Dateien zu machen.
    Diese *.pgm Dateien werden dann in *.jpeg gewandelt und anschliessen mit mencoder in *.avi gewandelt. Soweit alles super aber in meinem Shellscript will ich nach dem "entpacken" der *.pgm Dateien diese Dateien in *.jpg wandeln

    nun zu meiner Frage:

    warum funktioniert das nicht:

    Code:
    find $dir -name "$filename*.pgm"  -print -exec cjpeg -quality 100 {} > {}.jpg \;
    
    $dir = Verzeichniss in dem die *.pgm sind
    $filename = filename der vid's ohne endung .vid

    wenn ich das ausführe kommt nur eine Datei heraus: {}.jpg die sehr groß ist und nicht viele dateien *.pgm.jpg

    mfg

    Denny
     
  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 Wolfgang, 22.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Weil die {} nach dem Redirect nicht als Dateiname aufgelöst wird!

    In diesem Fall nutze einfach xargs oder eine PIPE.

    Gruß Wolfgang
     
  4. #3 Der_Wolf, 22.09.2008
    Der_Wolf

    Der_Wolf Jungspund

    Dabei seit:
    23.07.2008
    Beiträge:
    13
    Zustimmungen:
    0
    Danke Wolfgang für die schnelle Antwort!

    Ich habs jetzt so gelöst:
    Code:
    for j in `find $dir -name "$filename*.pgm"`; 
            do  
                 jpegname=$dir/$(basename $j .pgm).jpg;
                 cjpeg -quality 100 $j > ${jpegname}
                 rm $j
            done
    
    
    Das Hauptproblem lag darin dass für jede gefundene Datei von find eine andere Ausgangsdatei von "cjpeg" definiert werden musste.
    Ich weiss allerdings nicht wie das mit pipe oder xargs gegangen wäre? Wäre da nicht das gleiche Problem aufgetreten?
     
  5. #4 Wolfgang, 22.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    PIPE:
    Code:
    find /path -name foo* | while read file;
    do 
    command $file >$file.ext
    done
    
    Und sorry, klar xargs ist hier nicht angebracht.

    Gruß Wolfgang
     
  6. Anzeige

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

Frage zu find

Die Seite wird geladen...

Frage zu find - Ähnliche Themen

  1. Fragen zu find

    Fragen zu find: Hallo an alle, Ich bin ziemlich neu in der Linux Welt und habe paar frage Ich soll alle Datein im system finden die vor weniger als drei Tagen...
  2. find-Kommando: Frage zu Tests und logischen Operatoren

    find-Kommando: Frage zu Tests und logischen Operatoren: Hallo zusammen, folgende Aufgabenstellung: Ich suche Dateien, die entweder zur group "mygroup" oder dem User "myuser" gehören. Die Dateinamen...
  3. Script mit find und xargs. Zwei fragen

    Script mit find und xargs. Zwei fragen: Hallo leute ich bin mal wieder dabei ein wenig mit der bash herumzuspielen. Wenn ich folgendes eingebe find /usr/ -type f -name README...
  4. Wichtige Frage zum Befehl 'find'

    Wichtige Frage zum Befehl 'find': Hi Leute, ich hatte zwar die Frage bereits in einen anderen Thread gestellt, ist aber gut möglich, dass die Frage untergegangen ist. Ich...
  5. find - Frage

    find - Frage: Find soll mir alle Dateien und Ordner ausspucken in diesem Verzeichniss (.), doch die Dateien, die mit einem f (gross oder klein soll keine rolle...