Linux / Como Renomear um Arquivo ou Diretório

Para renomear um arquivo ou diretório no Linux, especifique o caminho existente e o novo caminho na ordem com o comando mv. Se o nome de destino já existir, ele poderá ser sobrescrito, ou o arquivo de origem poderá ser movido para um local inesperado, portanto deve ser verificado antes da execução.

Formato básico para renomear

O mv usado no guia para mover arquivos com mv também é usado para renomear. Se os dois caminhos estiverem no mesmo diretório, apenas o nome muda, e se estiverem em diretórios diferentes, a localização também muda.

mv -i -- source destination

-i verifica antes de sobrescrever um arquivo de destino existente. -- indica o fim das opções, então nomes que começam com um hífen não são interpretados como opções. Os exemplos abaixo são baseados no GNU coreutils mv e no shell Bash.

Preparando arquivos e diretórios para prática

Pratique em um diretório temporário para não mexer nos dados existentes. Execute os comandos abaixo na ordem no mesmo shell. O caminho do diretório temporário recém-criado será armazenado na variável workdir.

workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"

Se report.txt e docs aparecerem na saída, você está pronto. Para verificar o caminho, execute printf '%s\n' "$workdir". Como os comandos usam variáveis do shell atual, se você abrir um novo terminal, precisará se preparar novamente.

Renomeando arquivos

Renomeie o arquivo de prática de report.txt para summary.txt e verifique os resultados. Certifique-se de que o novo destino ainda não exista antes de executar.

ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"

Se bem-sucedido, a lista mostrará summary.txt em vez de report.txt, e o último comando exibirá example. Ao renomear dentro do mesmo sistema de arquivos, o conteúdo permanece o mesmo. Para voltar ao nome original, certifique-se de que o nome original não esteja em uso, então troque os dois caminhos e execute mv -i.

Renomeando diretórios

Os diretórios são renomeados da mesma forma. O seguinte comando renomeia docs para archive em um ambiente de prática onde o destino não existe.

mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"

Se for bem-sucedido, archive será exibido em vez de docs. -T é uma opção no GNU mv que não trata o último caminho como o diretório de destino de forma especial. Sem esta opção, se você especificar um diretório já existente como destino, a origem pode ser movida para dentro dele em vez de ser renomeada. Mesmo se você usar -T, substituições ou erros podem ocorrer dependendo do tipo e do estado do destino existente, então verifique primeiro. Diretórios de destino não vazios não podem ser substituídos.

Verificando substituição e caminho

Se você especificar um arquivo existente como destino, o arquivo pode ser sobrescrito. Faça backup dos arquivos importantes primeiro e responda y apenas ao sobrescrever em resposta à pergunta de confirmação de -i. Para evitar sobrescrever, digite n. O texto de confirmação pode variar dependendo das configurações do sistema e do idioma.

Se o nome do arquivo contiver espaços, coloque todo o caminho entre aspas duplas. O seguinte é um exemplo de criação de um arquivo de prática separado e, em seguida, renomeá-lo.

printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"

Se notes for exibido no final, o arquivo foi lido sob um novo nome. No trabalho real, se o caminho for especificado incorretamente ou não houver permissão, verifique a mensagem de erro e as permissões de escrita dos diretórios de origem e destino. Ao mover para outro sistema de arquivos, pode ocorrer a cópia seguida da exclusão do original, portanto, é necessário verificar o espaço e o resultado. Para mais detalhes sobre opções e comportamento, consulte o manual do mv do GNU coreutils .