Refactored to use a single external process:
for i in *; do
wc=$(wc -c <"$i")
case $wc in 100 ) ;; ???* ) continue ;; esac
echo "$wc $i"
Notice the quoting, the use of redirection to avoid the need for
cut, and the use of a wildcard pattern to exploit the happy fact that any number with three or more digits is bigger than or equal to 100.
(Your code says less than or equal to 100 while the problem description says genuinely less than 100; you can take out the
100) ;; case if your code is wrong and your stated question is correct. )
wc -c counts characters, not bytes; for text in a variable-length or multibyte encoding such as Unicode, they are not the same.