2009-08-10 29 views
1

Bashスクリプトでは全く新しいですが、スクリプトを最後に実行してからファイルが変更された場合にのみ、テクスチャをPVR形式に圧縮するファイルを作成することはほとんど役に立ちません。相続人は、私がこれまで持っているコード:Bashタイムスタンプの比較

ここでの質問のいずれかを使用して

# 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 

は、私はそれが働いてイマイチと私はその私がいけないので、完全にコードを理解かなり確信しているタイムスタンプのチェックを実行しようとしましたが、私。

誰が$ outputDirの/ $ i.pvrが$ inputDirのより新しい/ $ iがあれば何イムが間違っ

おかげで、マイケル・A参照するには

答えて

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

のチェックを行うことは、私はあなたがしたいと思いますお勧めできますそれ以外の方法でそれをする。

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

fiを確認するには、入力が出力より新しいかどうかを確認します。

4

一部のファイルが予想よりも新しい場合にのみ処理するのは、makeで実現するのが最適です。これは少し複雑ですが、非常に効率的です。

+0

+1。 *適切に学ぶことはもっと複雑かもしれませんが、OPのような比較的単純なタスクの場合、おそらく既存のmakefileで遊ぶだけでかなり早く解決できます。だから、OPに、複雑さの警告で延期しないでください。それは本当に努力の価値がある。 –

関連する問題