Opção mv --exchange do Linux substitui três comandos por um
Desde a versão 9.5 do GNU coreutils, existe uma forma melhor de trocar dois arquivos de lugar: o comando mv --exchange. Em vez de fazer o clássico (e arriscado) "move para temporário, move o segundo para o primeiro, move o temporário para o segundo", agora é possível fazer tudo em uma única operação atômica, garantindo que ambos os nomes sempre existem e apontam para arquivos durante toda a troca.
O recurso usa a chamada de sistema renameat2() do kernel com a flag RENAME_EXCHANGE, o que torna a operação indivisível — sem lacunas onde um arquivo poderia desaparecer no meio do processo. Para diretórios, é preciso adicionar a flag -T (--no-target-directory) para que o comando não tente mover para dentro do segundo diretório. Uma ressalva importante: ambos os caminhos precisam estar no mesmo sistema de arquivos. A opção está disponível em distribuições recentes como NixOS, Fedora e Debian 13.
Fonte original: It's FOSS ↗