x

[erledigt] Linux Frage


  1. [erledigt] Linux Frage · SunCobalt (Gast) · 15.04.2011 20:06 · [flux]

    ich habe ein kleines Linux Problem. Ich habe 106 einzelne DOP Dateien, die ich bearbeiten muss.

    Wenn es eine einzelne Datei wäre, dann würde es so gehen

    gdaladdo -ro --config USE_RRD YES -r gauss Datei.tif 2 4 8 16 32 64 128 256

    Nur geht meine Lust, das 106 mal zu machen gegen 0...vor allem da das mehr als einen Tag dauern kann. Ich habe die folgende Idee gemailt bekommen und hätte gedacht, dass es so gehen müsste. Ich will nicht nochmal rückfragen. Sonst hält er mich noch für blöd....ihr könnt das ruhig tun 🙂

    Im DOP Verzeichnis führe ich aus:

    sudo find ./ -name *.tif -print0 | xargs -0 gdaladdo -ro --config USE_RRD YES -r gauss {} 2 4 8 16 32 64 128 256

    Geht aber nicht. Da kommt:
    thomas@SunCobalt:/osm/mapserver/fileserver/SentaDOP$ find ./ -name *.tif -print0 | xargs -0 gdaladdo -ro --config USE_RRD YES -r gauss {} 2 4 8 16 32 64 128 256
    find: Der Pfad muà vor dem Suchkriterium stehen: 7C39-10-2.tif
    Aufruf: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [Pfad...] [Suchkriterium]
    ERROR 4: `{}' does not exist in the file system,
    and is not recognised as a supported dataset name.

    Kann mir da jemand helfen? Das "7C39-10-2.tif" ist übrigends ein Dateiname. Danke schonmal


    • Re: [erledigt] Linux Frage · MHohmann (Gast) · 15.04.2011 20:24 · [flux]

      Mit -print und xargs bin ich mir nicht sicher - ich würde es mit -exec machen, dann müsste es so aussehen:

      find ./ -name "*.tif" -exec gdaladdo -ro --config USE_RRD YES -r gauss {} 2 4 8 16 32 64 128 256 \;

      Wichtig sind die Anführungszeichen bei "*.tif" und das abschließende "\;".


    • Re: [erledigt] Linux Frage · SunCobalt (Gast) · 15.04.2011 20:28 · [flux]

      super. Danke funktioniert 🙂


    • Re: [erledigt] Linux Frage · kellerma (Gast) · 15.04.2011 20:53 · [flux]

      Hi,

      für die xargs-Benutzung müßte man evtl. eine sub-shell aufmachen:

      $ find . -name "*.tif" -print0 | xargs -r0 sh -c 'gdaladdo -ro --config USE_RRD YES -r gauss "$@" 2 4 8 16 32 64 128 256' hihi

      oder so ähnliich 😉

      Ciao,
      Frank

      EDIT:
      Eiwo, gdaladdo kann nur jeweils eine Datei bearbeiten, dann ist -exec die bessere Wahl.


    • Re: [erledigt] Linux Frage · Fabi2 (Gast) · 15.04.2011 21:11 · [flux]

      oder man macht:

      for i in *.tif; do gdaladdo -ro --config USE_RRD YES -r gauss "$i" 2 4 8 16 32 64 128 256; done