O Rsync poderia fazer isso:
rsync -R --remove-source-files a/b/c/d /TARGETDIR/
Mas estritamente falando, é mais uma cópia do que uma renomeação.
uma função é simples:
mkmv() {
mkdir -p -- "$2/$(dirname -- $1)" && mv -- "$1" "$2/$1"
}
e provavelmente mais eficientemente (embora rsync
tenha mais algumas opções que permitem copiar permissões ou outros atributos dos arquivos ou diretórios).