tr -cd '[:space:]' < my_file | wc -m
Funcionaria. Mas com GNU tr , isso só funcionaria em byte único por localidades de caracteres (normalmente, não em UTF-8) ou com entrada ASCII somente em locales UTF-8.
Sem as aspas em torno de [:space:] , você receberia uma mensagem de erro em csh, tcsh ou zsh (a menos que a condição abaixo fosse atendida) e na maioria dos shells, isso falharia se houvesse um arquivo chamado : , s , p , a , c ou e no diretório atual, pois [:space:] é um shell glob.
Observe também que wc não conta caracteres por padrão (são bytes, palavras e novas linhas apenas quando não é dada nenhuma opção).
Com o GNU awk , você pode usar:
awk -v RS='[[:space:]]' 'END{print NR}'
Exemplo:
$ printf 'tr -cd '[:space:]' < my_file | wc -m
\u2006\t\r\n' | awk -v RS='[[:space:]]' 'END{print NR}'
4