Isso pressupõe que os nomes dos diretórios não tenham nenhum caractere estranho, como espaços ou novas linhas em seus nomes, e que não haja nomes de arquivos que iniciem com um ponto.
Não testado.
find /files -type d | while read -r dir
do
base="000000${dir##*/}"
new="/files/namespaced/${base: -9:3}/${base: -6:3}/${base: -3}"
mkdir -p "$new"
mv "$dir/*" "$new"
rmdir "$dir"
done
Outra maneira de obter o novo nome do diretório:
new=$(echo "$dir" | sed 's|...$|/&|;s|\(.*\)/\(.*\)/\(...\)$|/namespaced/000000/|; s|\(.*\)/.*\(...\)\(...\)/\(...\)$|///|' "$dir")