mv命令-不要覆盖文件


8

我要mv归档,而不要覆盖重复项。该-b开关只能使一个单一的备份文件,而我可能有很多。

根据mv手册页

备份后缀为“〜”,除非使用--suffix或SIMPLE_BACKUP_SUFFIX设置。可以通过--backup选项或通过VERSION_CONTROL环境变量来选择版本控制方法。这些是值:

无,关闭,
永不对备份 进行编号(即使已指定--backup)
,t
使存在编号的备份
,无n
如果已存在编号的备份,则编号为零,否则
简单,永远不
进行简单备份

我想我想使用'existing,nil'选项...但是我不知道该怎么称呼。

如果我的命令是:

mv $src $dest

如何实现“ existing,nil”选项?


这个答案对使用cp而不是使用给出了很好的回答mvunix.stackexchange.com/a/9902
Connor Leech

Answers:


6

要启用existingnil(或其他任何选项),请将它们作为--backup选项的值传递:

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

请注意,这不能满足您的要求:

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

您实际上想要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~

看起来真的很神秘。备份选项有什么用?
康纳·里奇

1
@ConnorLeech控制备份设置?
muru


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.