Comando mv: no sobrescribir archivos

8

Quiero mvarchivos y no sobrescribir duplicados. El -binterruptor solo crea un único archivo de respaldo, mientras que puedo tener muchos.

Según la mvpágina del manual :

El sufijo de copia de seguridad es '~', a menos que esté configurado con --suffix o SIMPLE_BACKUP_SUFFIX. El método de control de versión se puede seleccionar mediante la opción --backup o mediante la variable de entorno VERSION_CONTROL. Aquí están los valores:

ninguno, desactivado,
nunca haga copias de seguridad (incluso si se proporciona una copia de seguridad)
numeradas, t
haga que las copias de seguridad numeradas
existan, nulo
numerado si existen copias de seguridad numeradas, simple de lo contrario
, nunca
haga copias de seguridad simples

Creo que quiero usar la opción 'existente, nula' ... pero no puedo entender cómo llamar a eso.

Si mi comando es:

mv $src $dest

¿Cómo puedo implementar la opción 'existente, nula'?

Se mi amigo
fuente
Esta respuesta tiene una buena respuesta sobre el uso en cplugar de mv: unix.stackexchange.com/a/9902
Connor Leech

Respuestas:

6

Para habilitar existingo nil(o cualquiera de las otras opciones), páselos como valores para la --backupopción:

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

Ten en cuenta que esto no hace lo que quieres:

$ 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’

Realmente quieres 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
fuente
eso parece realmente críptico. ¿Para qué es la opción de copia de seguridad?
Connor Leech
1
@ConnorLeech para controlar la configuración de copia de seguridad?
muru
0
mv --backup=existing $src $dest

o

mv --backup=nil $src $dest
Florian Diesch
fuente
Después de muchos intentos, conseguí que la sintaxis funcionara, pero la opción nil no funcionó. --backup = t lo hace sin embargo. ¡GRACIAS!
BeMy Friend
0
mv --backup=t "$src/$file" "$dest"
Se mi amigo
fuente
para más detalles verman mv
Elder Geek