Это выглядит намного лучше, чем создание временного файла:
SIZE=`stat -c %s filea`
cmp -s -n $SIZE filea fileb # -s for silence
Проверьте состояние выхода, чтобы увидеть, действительно ли первые байты этих файлов равны.
Обновление: согласно запросу xk0der, вот более длинный пример:
wormhole:tmp admp$ echo -n "fooa" > one # -n to supress newline
wormhole:tmp admp$ echo -n "foobc" > two
wormhole:tmp admp$ SIZE=`stat -c %s one`
wormhole:tmp admp$ echo $SIZE
4
wormhole:tmp admp$ (cmp -s -n $SIZE one two && echo "equal") || echo "not equal"
not equal
wormhole:tmp admp$ echo -n "fooac" > two # first 4 bytes are equal now
wormhole:tmp admp$ (cmp -s -n $SIZE one two && echo "equal") || echo "not equal"
equal
Кроме того, в MacOS X вы должны использовать:
SIZE=`stat -f %z filename`