Celeb Glow
updates | March 29, 2026

mv command - don't overwrite files

I want to mv files and not overwrite duplicates. The -b switch only makes a single backup file, whereas I may have many.

According to the mv man page:

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable. Here are the values:

none, off: never make backups (even if --backup is given)
numbered, t: make numbered backups
existing, nil: numbered if numbered backups exist, simple otherwise
simple, never: always make simple backups

I think I want to use the 'existing, nil' option... but I can't figure out how to call that.

If my command is:

mv $src $dest

How can I implement the 'existing, nil' option?

1

3 Answers

To enable existing or nil (or any of the other options), pass them as values for the --backup option:

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

Be warned that this does not do what you want:

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

You actually want 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

or

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy