Tente executá-lo na sessão de tela. Ou até mesmo tente outra construção. Eu acredito que o find + sed funcionará melhor que o bash:
find images/ -name "*.jpg" | sed 's%^[^_]*_[^_]*_\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\).*%mkdir -p "/home/username/sorted////" \&\& mv "&" "/home/username/sorted/////"%'
Isto é apenas para mostrar, como sed fazer comandos para executar.
Adicionar e
após o último %
forçará a execução do comando:
find images/ -name "*.jpg" | sed 's%^[^_]*_[^_]*_\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\).*%mkdir -p "/home/username/sorted////" \&\& mv "&" "/home/username/sorted/////"%e'
ps. Você não precisa usar no bash
day=$(echo $fullyear |cut -c7-8)
O Bash pode fazer isso sozinho sem echo | cut
:
day=${fullyear:6:2}