---
name: "mv"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/mv"
---

# mv(1)

move (rename) files

## NAME

mv - move (rename) files

## SYNOPSIS

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

## DESCRIPTION

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

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

- **--backup\[=CONTROL\]**

  make a backup of each existing destination file

- **-b**

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

- **--debug**

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

- **--exchange**

  exchange source and destination

- **-f, --force**

  do not prompt before overwriting

- **-i, --interactive**

  prompt before overwrite

- **-n, --no-clobber**

  (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**

  do not copy if renaming fails

- **--strip-trailing-slashes**

  remove any trailing slashes from each SOURCE argument

- **-S, --suffix=SUFFIX**

  override the usual backup suffix

- **-t, --target-directory=DIRECTORY**

  move all SOURCE arguments into DIRECTORY

- **-T, --no-target-directory**

  treat DEST as a normal file

- **--update\[=UPDATE\]**

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

- **-u**

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

- **-v, --verbose**

  explain what is being done

- **-Z, --context**

  set SELinux security context of destination file to default type

- **--help**

  display this help and exit

- **--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

  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

## AUTHOR

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

## REPORTING BUGS

Report bugs to: \<bug-coreutils@gnu.org\>.\
 Report any translation bugs to: \<https://translationproject.org/team/\>.\
 GNU coreutils home page: \<https://www.gnu.org/software/coreutils/\>\
 General help using GNU software: \<https://www.gnu.org/gethelp/\>

## COPYRIGHT

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

## SEE ALSO

[**rename**(2)](/rename/2.md)

Full documentation \<https://www.gnu.org/software/coreutils/mv\>\
 or available locally via: info '(coreutils) mv invocation'
