MV(1) User Commands MV(1)

# [NAME](#NAME)

mv - move (rename) files

# [SYNOPSIS](#SYNOPSIS)

**mv** \[*OPTION*]... \[*-T*] *SOURCE DEST*  
**mv** \[*OPTION*]... *SOURCE*... *DIRECTORY*  
**mv** \[*OPTION*]... *-t DIRECTORY SOURCE*...

# [DESCRIPTION](#DESCRIPTION)

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.

[**--backup\[=CONTROL\]**](#backup_=CONTROL_)

make a backup of each existing destination file

[**-b**](#b)

like **--backup** but does not accept an argument

[**--debug**](#debug)

explain how a file is copied. Implies **-v**

[**--exchange**](#exchange)

exchange source and destination

[**-f, --force**](#f,)

do not prompt before overwriting

[**-i, --interactive**](#i,)

prompt before overwrite

[**-n, --no-clobber**](#n,)

(deprecated) silently skip existing files. See also **--update**

If you specify more than one of **-i**, **-f**, **-n**, only the final one takes effect.

[**--no-copy**](#no)

do not copy if renaming fails

[**--strip-trailing-slashes**](#strip)

remove any trailing slashes from each SOURCE argument

[**-S, --suffix=SUFFIX**](#S,)

override the usual backup suffix

[**-t, --target-directory=DIRECTORY**](#t,)

move all SOURCE arguments into DIRECTORY

[**-T, --no-target-directory**](#T,)

treat DEST as a normal file

[**--update\[=UPDATE\]**](#update_=UPDATE_)

control which existing files are updated; UPDATE={all,none,none-fail,older(default)}

[**-u**](#u)

equivalent to **--update**\[=*older*]. See below

[**-v, --verbose**](#v,)

explain what is being done

[**-Z, --context**](#Z,)

set SELinux security context of destination file to default type

[**--help**](#help)

display this help and exit

[**--version**](#version)

output version information and exit

UPDATE controls which existing files in the destination are replaced. 'all' is the default operation when an **--update** option is not specified, and results in all existing files in the destination being replaced. 'none' is like the **--no-clobber** option, in that no files in the destination are replaced, and skipped files do not induce a failure. 'none-fail' also ensures no files are replaced in the destination, but any skipped files are diagnosed and induce a failure. 'older' is the default operation when **--update** is specified, and results in files being replaced if they're older than the corresponding source file.

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](#none,)

never make backups (even if **--backup** is given)

[numbered, t](#numbered,)

make numbered backups

[existing, nil](#existing,)

numbered if numbered backups exist, simple otherwise

[simple, never](#simple,)

always make simple backups

# [AUTHOR](#AUTHOR)

Written by Mike Parker, David MacKenzie, and Jim Meyering.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to: &lt;bug-coreutils@gnu.org&gt;.  
Report any translation bugs to: &lt;https://translationproject.org/team/&gt;.  
GNU coreutils home page: &lt;https://www.gnu.org/software/coreutils/&gt;  
General help using GNU software: &lt;https://www.gnu.org/gethelp/&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;https://gnu.org/licenses/gpl.html&gt;.  
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

# [SEE ALSO](#SEE_ALSO)

[**rename**(2)](/man/os/coreutils/rename.2)

Full documentation &lt;https://www.gnu.org/software/coreutils/mv&gt;  
or available locally via: info '(coreutils) mv invocation'

October 2026 GNU coreutils 9.12

---

Document: mv(1) from coreutils 9.12-r5 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/coreutils.git
