[erledigt] Linux Frage

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 :slight_smile:

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

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 “;”.

super. Danke funktioniert :slight_smile:

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 :wink:

Ciao,
Frank

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

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