kostenloser Webspace werbefrei: lima-city


Leerstellen im Dateinamen in Shell Script

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    banditsoberberg

    Kostenloser Webspace von banditsoberberg

    banditsoberberg hat kostenlosen Webspace.

    Hallo,

    ich möchte den Inhalt eines Verzeichnis (JPG-Bilder) per Shell Script verarbeiten. Leider sind in den Dateinamen auch Leerstellen drin, was in meinem Code nicht funktioniert. Vielleicht hat ja einer einen Tip für mich.

    Hier mein Code
    for file in `ls -1b *.jpg`;
    do
      file $file; # fuehrt zu einen: No such file or directory, weil der Dateiname zu mehreren Token verlegt wird! ;-(
      convert -resize 768 $file 'x/'$file;
    done;


    Gruß

    Dirk
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich hab keine Ahnung von Linux und so. Aber unter Windows: " ". Einfach um den Filename Anführungszeuchen machen.
  4. nikic merkst du was ?

    Es gibt hier nicht DEN File Namen, weswegen auch eine einfach Maskierung nicht helfen wird.

    Die einfachste Variante wäre die Leerzeichen im Dateinamen zu beseitigen. Ansonsten könntest du die Ausgabe von ls erst irgendwie filtern, ich denke daran den Dateinamen in file solange zu erweitern bis der nächste Teilstring sicher nicht mehr zum Dateinamen gehört (z.B. alles was hinter .jpg steht)
  5. Hm? Warum gibts keinen Filename? Der müsste doch eigentlich in $file enthalten sein. Ob man einfach "$file" schreiben kann wei ich net.

    Oder liest die for-Schleife etwa getrennt nach Leerzeichen, nicht nach Filenames aus? (Obwohl ich eher auf Filenames tippen würde. Die werden doch jeder in einer neuen Zeile ausgegeben und nicht jeder mit nem Leerzeichen getrennt. Aber wie gesagt, KA von Linux ... )
  6. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    Ungefähr so solte es gehen:
    find . -name "*.jpg" -exec convert -resize 768 \{\} x/\{\} \;


    @nikic: Es ist leider so, dass ein Dateiname mit Leerzeichen durch die for-Schleife in mehrere $file Variablen autgetrennt wird.
  7. c****s

    oder so:

    #!/bin/sh
    
    for file in *
    do
    	if echo "$file" | grep "\.jpg$" > /dev/null
    	then
    		convert -resize 768 "$file" "x/$file"
    	fi
    done
  8. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    oder so:
    for file in *.jpg
    do
      convert -resize 768 "$file" "x/$file"
    done


    Beitrag zuletzt geändert: 30.6.2009 20:18:28 von kochmarkus
  9. Autor dieses Themas

    banditsoberberg

    Kostenloser Webspace von banditsoberberg

    banditsoberberg hat kostenlosen Webspace.

    Hey Jungs,

    danke danke es klappt.

    kochmarkus schrieb: oder so:
    for file in *.jpg
    do
      convert -resize 768 "$file" "x/$file"
    done

  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!