我想要mv
文件并且不覆盖重复项。-b
交换机只会生成一个备份文件,而我可能有很多。
根据mv
手册页:
备份后缀为 '
~
',除非使用--suffix
或进行设置SIMPLE_BACKUP_SUFFIX
。版本控制方法可以通过选项--backup
或VERSION_CONTROL
环境变量进行选择。以下是值:无,关闭:从不进行备份(即使给出了 --backup)
编号,t:制作编号备份
现有的,无:如果存在编号备份,则使用编号,否则使用简单
简单,从不:始终进行简单备份
我想使用“现有的,零”选项......但我不知道如何调用它。
如果我的命令是:
mv $src $dest
我如何实现“现有,无”选项?
答案1
要启用existing
或nil
(或任何其他选项),请将它们作为选项的值传递--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~
答案2
mv --backup=existing $src $dest
或者
mv --backup=nil $src $dest
答案3
mv --backup=t "$src/$file" "$dest"