Comando mv - não substitui arquivos

8

Quero mvarquivos e não sobrescrever duplicatas. A -bopção cria apenas um único arquivo de backup, enquanto eu posso ter muitos.

De acordo com a mvpágina do manual :

O sufixo de backup é '~', a menos que definido com --suffix ou SIMPLE_BACKUP_SUFFIX. O método de controle de versão pode ser selecionado através da opção --backup ou através da variável de ambiente VERSION_CONTROL. Aqui estão os valores:

nenhum, desativado
nunca faça backups (mesmo se --backup for fornecido)
numerado, não
faça backups numerados
existentes, nem
numerado se houver backups numerados, simples caso contrário
, simples, nunca
faça backups simples

Eu acho que quero usar a opção 'existente, zero' ... mas não consigo descobrir como chamar isso.

Se meu comando for:

mv $src $dest

Como posso implementar a opção 'existente, zero'?

Seja meu amigo
fonte
Esta resposta tem uma boa resposta sobre o uso cp, em vez de mv: unix.stackexchange.com/a/9902
Connor Sanguessuga

Respostas:

6

Para ativar existingou nil(ou qualquer outra opção), passe-os como valores para a --backupopção:

mv --backup=existing "$src" "$dest"
mv --backup=nil "$src" "$dest"

Esteja avisado de que isso não faz o que você deseja:

$ mkdir foo bar
$ cp blah/* foo
$ cp blah/* bar
$ mv --backup=nil bar/* foo/* -t blah
mv: will not overwrite just-created ‘blah/a.jpg’ with ‘foo/a.jpg’
mv: will not overwrite just-created ‘blah/b.ogv’ with ‘foo/b.ogv’
mv: will not overwrite just-created ‘blah/cd ef.JpG’ with ‘foo/cd ef.JpG’

Você realmente quer numbered/ t:

$ mv --backup=numbered bar/* foo/* -t blah
$ ls blah 
a.jpg  a.jpg.~1~  a.jpg.~2~  b.ogv  b.ogv.~1~  b.ogv.~2~  cd ef.JpG  cd ef.JpG.~1~  cd ef.JpG.~2~
muru
fonte
isso parece realmente enigmático. Para que serve a opção de backup?
Connor Leech
1
@ConnorLeech para controlar as configurações de backup?
muru 26/10/2015
0
mv --backup=existing $src $dest

ou

mv --backup=nil $src $dest
Florian Diesch
fonte
Depois de muitas tentativas, consegui a sintaxe funcionando - mas a opção nil não funcionou. --backup = t faz embora. OBRIGADO!
BeMy Friend
0
mv --backup=t "$src/$file" "$dest"
Seja meu amigo
fonte
para detalhes, consulteman mv
Elder Geek