The crc32 executable that you are using is a Perl script distributed together with the Archive::Zip Perl module.
The crc32 Perl script is quite short, and has this little thing in it:
if ( $file =~ /[^[:xdigit:]]([[:xdigit:]]{8})[^[:xdigit:]]/ ) { my $filenameCrc = $1; if ( lc($filenameCrc) eq lc($fileCrc) ) { print("\tOK") } else { print("\tBAD $fileCrc != $filenameCrc"); } }
That is, if the pathname of the file contains eight consecutive hexadecimal digits, preceded and followed by at least one non-hexadecimal digit, this hexadecimal number is compared with the CRC32 checksum of the file.
In your case, you're running crc32 on ./9836Feeding_the_dog_.mpeg. This pathname contains some non-hexadecimal digits (./) followed by exactly eight hexadecimal digits (9836Feed) and then something non-hexadecimal again. 9836Feed is not the CRC32 checksum of the file, so it complains.
Example that triggers this behaviour that is "not BAD":
$ cat 261dafe6_file 12345 $ crc32 ./261dafe6_file 261dafe6 OK
Recreating your test, and provoking the "BAD" response by adding ./ in front of the pathname of the file:
$ echo 12345 >9836Feeding_the_dog_.mpeg $ crc32 9836Feeding_the_dog_.mpeg 261dafe6 $ crc32 ./9836Feeding_the_dog_.mpeg 261dafe6 BAD 261dafe6 != 9836Feed
Since the crc32 executable is undocumented, obviously somewhat quirky, and not widely used (I didn't know about it and had to track it down, but that may not say much) I would suggest using some other tool for calculating the checksums of files. The md5sum tool from GNU coreutils is widely used, and on BSD systems you may use md5. There are also utilities for calculating stronger hashes (SHA1, SHA256 and SHA512 and others are supported by readily available utilities).
(By "non-hexadecimal digit" I mean "something that is not a hexadecimal digit")