2009-08-10 8 views
1

Im Bash Scripting völlig neu, aber mir wurde gesagt, mit wenig Hilfe, eine Datei zu erstellen, die Texturen in PVR-Format komprimiert, nur wenn die Datei seit der letzten Ausführung des Skripts geändert wurde. Heres haben den Code ich so weit:Bash Timestamp Vergleiche


# variables 
TEXTURE_TOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/texturetool 
INPUT_DIR="/Data/Mobile" 
OUTPUT_DIR="/Data/iPhone" 
IMAGE_GREP="\(.bmp\|.png\)" 
OTHER_GREP="\.b3d$" 

echo "Starting backup of directory $INPUT_DIR to directory $OUTPUT_DIR" 

# cycle through the input directory for images we can compress 
echo "Compressing textures!" 
for i in $(ls -a "$INPUT_DIR" | grep $IMAGE_GREP ); 
    do 
     if test "$OUTPUT_DIR/$i.pvr" -nt "$INPUT_DIR/$i"; then 
     # check to see output's status 
     echo "Compressing file $i!" 

     # compress and store in output directory 
     $TEXTURE_TOOL -m -e PVRTC --bits-per-pixel-2 -o "$OUTPUT_DIR/$i.pvr" -f PVR "$INPUT_DIR/$i" 
     fi 
    done 

# cycle through the input directory for models we can export 
echo "Moving models!" 
for i in $(ls -a "$INPUT_DIR" | grep $OTHER_GREP ); 
    do 
     # check to see output's status 
     echo "Moving model file $i!" 

     # cp to output directory 
     cp "$INPUT_DIR/$i" "$OUTPUT_DIR/$i" 
    done 

hier eine der Fragen verwenden Ich habe versucht, den Zeitstempel zu tun, überprüft aber ich es ist nicht arbeiten, und ich bin mir ziemlich sicher sein, weil ich voll und ganz den Code nicht verstehen.

Kann jemand empfehlen, was Im falsch

Dank tun, Michael A

Antwort

3
test "$OUTPUT_DIR/$i.pvr" -nt "$INPUT_DIR/$i"; 

Prüft, ob $ outputdir/$ i.pvr neuer ist als $ InputDir/$ i, ich glaube, Sie wollen um es anders herum zu machen.

Um zu überprüfen, ob die Eingabe neuer ist als die Ausgabe.

4

Nur wenn einige Dateien neuer als erwartet sind, wird die beste Leistung mit make erreicht. Dies ist ein wenig komplexer zu lernen, aber sehr effizient.

+0

+1. Es könnte komplizierter sein, * richtig * zu lernen, aber für eine relativ einfache Aufgabe wie die OPs, könnte es wahrscheinlich ziemlich schnell gelöst werden, indem man nur mit existierenden Makefiles herumspielt. Also, zum OP, lassen Sie sich nicht von der Warnung vor Komplexität abschrecken; es lohnt sich in der Tat. –