Você pode usar os recursos de substituição de texto do seu shell. Em bash, você poderia usar um animal como:
mv blob/a_long_directory_name/c/xx !#:$:gs^c/xx^evenmore/yy
Para dividir:
!# é a linha atual digitada até agora
:$pede para escolher a última palavra (substitua por um número npara selecionar a n'palavra) da string em consideração (!# neste caso). A última palavra da linha digitada até agora seria a palavra anterior.
:gs^xx^yyfaz a gsubstituição textual global ( ) ( s) na palavra resultante, substituindo 'xx' por 'yy'. ^é apenas um delimitador para o scomando permitir o uso /em seus padrões.
Esse método é um pouco mais geral, pois permite substituir qualquer parte do caminho ('xx') por qualquer outra palavra ('yy').
Finalmente, como em qualquer manipulação de histórico, é bom ter as opções de shell apropriadas definidas (por exemplo, in ~/.bashrc). Nesse caso
shopt -s histverify
exibirá a linha editada depois que você pressionar retornar, para que você ainda possa editá-la e verificar se há erros.
Por que você usaria uma construção como essa, não tenho certeza, mas funciona neste caso.
even_morecaminho relativo ... #