Befehl mv - Dateien nicht überschreiben

8

Ich möchte mvDateien und keine Duplikate überschreiben. Der -bSwitch erstellt nur eine einzige Sicherungsdatei, während ich möglicherweise viele habe.

Laut mvManpage :

Das Sicherungssuffix lautet '~', sofern es nicht mit --suffix oder SIMPLE_BACKUP_SUFFIX festgelegt ist. Die Versionskontrollmethode kann über die Option --backup oder über die Umgebungsvariable VERSION_CONTROL ausgewählt werden. Hier sind die Werte:

keine, aus
Niemals Backups erstellen (auch wenn --backup angegeben ist)
nummeriert, t
nummerierte Backups
vorhanden machen, null
nummeriert, wenn nummerierte Backups vorhanden sind, einfach, sonst
einfach, niemals
immer einfache Backups erstellen

Ich denke, ich möchte die Option 'existierend, null' verwenden ... aber ich kann nicht herausfinden, wie ich das nennen soll.

Wenn mein Befehl lautet:

mv $src $dest

Wie kann ich die Option "Vorhanden, Null" implementieren?

Sei mein Freund
quelle
Diese Antwort hat eine gute Antwort über die Verwendung cpanstelle von mv: unix.stackexchange.com/a/9902
Connor Leech

Antworten:

6

Um existingoder nil(oder eine der anderen Optionen) zu aktivieren , übergeben Sie sie als Werte für die --backupOption:

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

Seien Sie gewarnt, dass dies nicht das tut, was Sie wollen:

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

Du willst eigentlich 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
quelle
das scheint wirklich kryptisch. Wofür ist die Sicherungsoption?
Connor Leech
1
@ConnorLeech, um die Backup-Einstellungen zu steuern?
Muru
0
mv --backup=existing $src $dest

oder

mv --backup=nil $src $dest
Florian Diesch
quelle
Nach vielen Versuchen funktionierte die Syntax - aber die Option nil funktionierte nicht. --backup = t tut es jedoch. VIELEN DANK!
BeMy Friend
0
mv --backup=t "$src/$file" "$dest"
Sei mein Freund
quelle
Für Details sieheman mv
Elder Geek