mv 命令-不覆盖文件

mv 命令-不覆盖文件

我想要mv文件并且不覆盖重复项。-b交换机只会生成一个备份文件,而我可能有很多。

根据mv手册页

备份后缀为 ' ~',除非使用--suffix或进行设置SIMPLE_BACKUP_SUFFIX。版本控制方法可以通过选项--backupVERSION_CONTROL环境变量进行选择。以下是值:

无,关闭:从不进行备份(即使给出了 --backup)
编号,t:制作编号备份
现有的,无:如果存在编号备份,则使用编号,否则使用简单
简单,从不:始终进行简单备份

我想使用“现有的,零”选项......但我不知道如何调用它。

如果我的命令是:

mv $src $dest

我如何实现“现有,无”选项?

答案1

要启用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~

答案2

mv --backup=existing $src $dest

或者

mv --backup=nil $src $dest

答案3

mv --backup=t "$src/$file" "$dest"

相关内容