Forum: PC-Programmierung makefile mit rsync?


von Georg T. (microschorsch)


Lesenswert?

Hallo zusammen,
ich brauche mal kurz Hilfe beim Erstellen eines Makefiles:

Ich möchte alle Dateien mit der Endung *uni aus einem Ordner rsyncen und 
die Files nachträglich von unicode (Endung uni) nach utf8 (Endung utf8) 
konvertieren. Später möchte ich weitere Aktionen auf den Files ausführen

Natürlich soll die codetranslation und die nachfolgendenen Operationen 
nur auf den geupdateten Files stattfinden.

Ich habe den rsync in ein separates shell-script ausgelagert, da hier 
komplexe Datei-Umbenennung stattfinden

bisher habe ich
1
RAWPATH=/mypath
2
UNIPATTERN=$(wildcard $RAWPATH/*.uni)
3
UTF8PATTERN=$(UNIPATTERN:.uni=.utf8)
4
5
all: download convert
6
7
convert: $(UTF8PATTERN)
8
9
download:
10
   ./download.sh
11
12
$(UTF8PATTERN): $(UNIPATTERN)
13
    mytranscommand -i $< -o $@

download geht, aber anscheinend wird UTF8PATTERN nicht richtig erzeugt
vieleicht kann mir jemand nen Tipp geben?

Danke
Schorsch

Nachtrag:
Es ist anscheinend nicht trivial eine Liste mit geupdateteten Files von 
rsync zu erhalten. Falls jemand weiß wie das geht, könnte ich eventuel 
sogar auf das Makefile verzichten

: Bearbeitet durch User
von Ralf D. (doeblitz)


Lesenswert?

Georg T. schrieb:
> Nachtrag:
> Es ist anscheinend nicht trivial eine Liste mit geupdateteten Files von
> rsync zu erhalten. Falls jemand weiß wie das geht, könnte ich eventuel
> sogar auf das Makefile verzichten

Was reicht dir am durch "--out-format=%n" produzierten Output nicht aus? 
Falls du auch Directories mit überträgst mußt du die noch ausfiltern 
(dank des trailing "/" trivial), aber ansonsten sollte das eigentlich 
exakt die benötigte Liste liefern.

von Georg T. (microschorsch)


Lesenswert?

Ralf D. schrieb:
> Was reicht dir am durch "--out-format=%n" produzierten Output nicht aus?

Hallo,
ja damit habe ich auch schon angefangen rumzuspielen. Ich kann das 
leider erst morgen wieder ausprobieren...

wenn ich rsync -av foo bar mache, steht da gar kein Dateiname, sondern 
nur x bytes transfered etc. Mit --out-format hatte sich nichts dabei 
geändert.

Wie müsste denn deiner Meinung ein korrekter rsync befehl heißen, der 
eine liste erzeugt?

etwa:
1
rsync -<option> ${A}/*.uni ${B}/ | grep <something> >> mylog

thx
Georg

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Georg T. schrieb:
> UNIPATTERN=$(wildcard $RAWPATH/*.uni)

UNIPATTERN=$(wildcard $(RAWPATH)/*.uni)

> $(UTF8PATTERN): $(UNIPATTERN)
>     mytranscommand -i $< -o $@

Sieht komisch aus, lass doch einfach mal mit
1
echo "mytranscommand -i $< -o $@"
ausgeben, ob das das ist, was du erwartest.  make-Variablen kannst du 
mit $warning oder $info anzeigen lassen.

von Georg T. (microschorsch)


Lesenswert?

Hallo,

der befehl mytranscommand wird im Makefile überhaupt nicht aufgerufen.

Allerdings habe ich gerade rsync mit der option --out-format=%n 
probiert, das scheint den richtigen output zu liefern, sofern man die 
verbose-option weglässt

Gruß und Danke, ihr habt mir sehr geholfen

Schorsch

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.