Bash时间戳比较

时间:2009-08-10 14:45:46

标签: macos bash unix timestamp

我是Bash脚本的新手,但是我被告知,在没有任何帮助的情况下,创建一个文件,只有在自上次运行脚本后文件被修改时才将纹理压缩为PVR格式。继承了我到目前为止的代码:


# 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

使用其中一个问题,我尝试进行时间戳检查,但我不工作,我很确定,因为我不完全理解代码。

任何人都可以建议我做错了吗

谢谢,Michael A

2 个答案:

答案 0 :(得分:4)

只有在某些文件比预期更新的情况下才能执行操作,最好使用make。这样学习起来有点复杂,但非常有效。

答案 1 :(得分:3)

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

检查$ OUTPUTDIR / $ i.pvr是否比$ INPUTDIR / $ i更新,我想你想要反过来这样做。

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

要检查输入是否比输出更新。