Empezaría con for file in "$dir"/*.png; do para coger las posibles fotos a eliminar.
Tras eso hay que cortarle el .png del nombre, que es la parte dura.
La documentación de manipulación de subcadenas de bash, como poco, intimida. En este caso la opción más sencilla parece ${string/%a/b}, que hace que si la cadena $string acaba en a cambie a por b. En este caso ${file/%.png/}, que cambia .png por nada.
Para comprobar si un fichero existe se usa if [ -e $file ], y ! para negarlo, así que se quedaría en if [ ! -e $file ].
Debería ser algo así:
for file in "$dir"/*.png; do
if [ ! -e "${file/%.png/}" ]; then
rm "$file"
fi
done
El tamaño de un archivo se saca con du y (hasta donde sé) tendrás que recortar el número con cut, awk o sed (en orden ascendente de hardcodidad).
La cantidad de imágenes es cuestión de sumar uno a una variable cada vez que borras un fichero.
Y por supuesto no añadas el rm de verdad o no uses el script donde tienes planeado usarlo hasta que hayas comprobado que funciona bien y borra sólo lo que tiene que borrar.
Aunque las especificaciones son un poco raras. A menos que sea la carpeta de datos de una aplicación compleja quizás haya una forma más sencilla.