mv (Unix)

Comando do sistema operacional Unix


O comando mv(move) dos sistemas operacionais unix-like move e renomeia um ou mais arquivos ou diretórios de um lugar para outro. Ou seja, ele copia e modifica o caminho do arquivo original para o caminho desejado e então apaga o arquivo original (assim sendo possível renomear e mudar o diretório de um arquivo simultaneamente).[1][2]

mv
Autor Mike Parker, David MacKenzie e Jim Meyering
Desenvolvedor AT&T Bell Laboratories
Lançamento 3 de novembro de 1971, 53 anos atrás
Versão estável GNU Core Utilities 8.25
Sistema operacional Unix, Unix-like
Licença GNU GPL

Para usar o comando mv o usuário precisa ter permissões de gravação para todos os diretórios por onde o arquivo vai ser movimentado. Isso ocorre porque o comando altera o conteúdo de ambos os diretórios envolvidos na operação. Vale notar que quando o arquivo é movido dentro do mesmo sistema de arquivo, sua data de modificação não é atualizada.

A sintaxe geral do comando mv é a seguinte[2]:

mv [OPÇÃO]... ORIGEM... DESTINO...

Os argumentos ORIGEM indicam os arquivos e/ou os diretórios que vão ser alterados. Se for especificado apenas um argumento ORIGEM, o parâmetro DESTINO indica o nome do arquivo ou do diretório de destino.

Se forem especificados mais de um parâmetro de ORIGEM, o parâmetro DESTINO deve necessariamente ser um diretório existente, ou pelo menos um link simbólico para um diretório.

As opções são usadas para modificar o comportamento do comando mv e devem ser precedidas por um hífen (-)

Opções

editar

As opções mais comuns são semelhantes ao comando cp:[1]

  • --backup (-b) - Executa uma cópia de segurança de qualquer arquivo existente antes de sobrescrevê-lo, colocando um ~ ao final de seu nome. Se a opção -S for utilizada o sufixo ~ é removido do arquivo
  • --force (-f) - Não pede confirmações ao usuário e sempre sobrescreve.
  • --interactive (-i) - Sempre perguntam antes para o usuário sobrescrever.
  • --update (-u) - Sobrescreve os arquivos antigos ou copia os arquivos não localizados.

Outras opções disponíveis são:[3]

  • --no-clobber (-n) - Não sobrescreve arquivos já existentes.
  • --target-directory (-t) - Move todos os arquivos passados como argumentos para o destino passado como argumento de -t
  • --no-target-directory (-T) - O argumento do caminho de destino é tratado como um arquivo normal

Não há uma chave --recursive. Quando o mv é usado para mover um diretório, ele move todo o diretório e todo o seu conteúdo de forma automática.[1]

Exemplos

editar
mv myfile mynewfilename      # renomeia 'myfile' para 'mynewfilename'.
 mv myfile ~/myfile          # move 'myfile' do diretório atual para o diretório principal (home).
                             # a notação '~' se refere ao diretório de login do usuários
 mv myfile subdir/myfile     # move 'myfile' para 'subdir/myfile'.
 mv myfile subdir            # faz o mesmo que a linha anterior, mantendo o nome do arquivo implictamente
 mv myfile subdir/myfile2    # move 'myfile' para 'subdir' renomeando o arquivo para 'myfile2'.
 mv be.03 /mnt/bkup/bes      # copia 'be.03' para o disco 'bkup' no diretório 'bes' 
                             # depois 'be.03' é apagado.
 mv afile another /home/yourdir/yourfile mydir 
                             # move múltiplos arquivos para o diretório 'mydir'.
 mv /var/log/*z ~/logs       # demora mais que o usual se '/var' está em outro sistema de arquivos 
                             # como frequentemente acontece, já que os arquivos serão copiadas e deletados
                             # tome cuidado quando for usar padrões globalizáveis para nomes de arquivo contendo
                             # os caracteres ?*[ para assegurar que os argumentos passados para 'mv'
                             # incluam uma lista de não diretórios e um diretório terminal
 
 man mv                      # exibe a página do manual para o comando 'mv'.

Arquivo já existente

editar

Quando um arquivo é movido/renomeado para outro já existente, o arquivo anterior é deletado. Se o usuário possuí permissão de gravação para o diretório mas não para o arquivo, o comando mv pede uma confirmação antes de proceder com a operação, a menos que a opção -f (force) seja usada.

Comandos relacionados

editar

Notas e Referências

  1. a b c Burtch, Ken O. Ciência Moderna, ed. Scripts de Shell Linux com Bash. 2005 1 ed. Rio de Janeiro: [s.n.] 522 páginas. 8573934050 
  2. a b «GNU Coreutils: mv invocation». www.gnu.org. Consultado em 30 de março de 2019 
  3. «mv(1): move files - Linux man page». linux.die.net. Consultado em 30 de março de 2019 
  Este artigo sobre Unix é um esboço. Você pode ajudar a Wikipédia expandindo-o.