Uma versão estendida da resposta do @ mihver1. Dê uma olhada em man find
se você quiser entender isso completamente.
#!/bin/bash
X=1000c # or what ever your size limit is
find_args=()
for ext in $(cat extensions.txt); do
find_args=( "${find_args[@]}" -o -name "*.$ext" )
done
find_args=( -type f -size -$X -not \( -false "${find_args[@]}" \) )
# first try it
find directory_A "${find_args[@]}" -print
# if that looks fine, copy the files
find directory_A "${find_args[@]}" -exec cp {} direcotry_B +