Você precisa de um shell para interpretar as construções if/then/else
ou executar esses pipelines (embora você não precise deles aqui):
find . -type f -exec sh -c '
for file do
case $(file -b "$file") in
(data) printf "%s is CORRUPT\n" "$file";;
(*) printf "%s is DATA\n" "$file";;
esac
done' sh {} +
(como na sua pergunta, ele imprime "CORRUPT" quando file
diz data
. Não sei ao certo o que você quis dizer).
Não importa o que você fizer, não inclua {}
no código de shell, como outros sugeriram! Isso seria muito perigoso (e btw não portátil), como por exemplo, um arquivo chamado $(rm -rf "$HOME")
faria com que você removesse todo o seu diretório pessoal.