Você precisa criar um pequeno arquivo de script para fazer sua renomeação / movimentação: chamá-lo de rnmv , digamos, e colocar o seguinte comando nele:
f="${1#./}"; echo mv "$f" "${f%%/*}.${f##*.}"
Não se esqueça de chmod +x rnmv . Em seguida, vá para o diretório raiz e chame rnmv de um comando find :
cd {wherever temp2 root is}
find . -name "temp2.txt" -exec rnmv "{}" \;
Quando você estiver feliz que os comandos mv corretos estão sendo criados, remova o echo de rnmv e sua renomeação / movimentação será feita.
Uma tarefa final é remover os subdiretórios vazios:
find . -name temp2 -exec rmdir "{}" \;
Isso é seguro, pois rmdir não removerá um diretório com arquivos nele. Dependendo da ordem de encontrar os diretórios, talvez seja necessário repetir o comando para estruturas como ABC / temp2 / temp2, já que o temp2 não estará vazio até que o segundo seja excluído.
Observe que, se o ABC, digamos, tiver mais de um arquivo temp2.txt em seus subdiretórios, cada comando mv sobrescreverá o ABC.txt anterior e somente o último encontrado será deixado depois.