Moving files and directories to organize them is an important aspect of the Linux operating system. It is one of the most basic tasks that every user has to perform very often. Linux provides the mv command to move and rename files and directories.
In this tutorial, we learn how to use the Linux mv command to move and rename files and directories.
Mv, also known as move, is used to move files and directories from one location to a new location. This utility can also be used to rename directories and files. It does not require any additional disk space for rename operation.
By default, if the target directory already has a file with the same name, then mv overwrites the existing destination file without any warning. You must use either the
-i option to prompt before overwriting, or the
-n option to avoid overwriting the destination file.
This command supports moving a single file or directory, as well as multiple files and directories.
You must have write permission on both the source and destination file and directory to use this command.
This is the basic syntax of the Linux mv command:
mv [option] source destination
Difference between Cp and Mv Commands
Mv and cp command both works in a similar fashion, but they have the following differences and cannot be used interchangeably:
|Moves the specified directory or file from one place to another.||Creates a copy of the source files or directories in the destination directory.|
|Removes the source files or directories.||Does not impact the source.|
|Can also be used to rename directories or files.||Cannot be used to rename directories or files.|
|Does not have an option to preserve file or directory metadata.||Provides an option to preserve file and directory metadata.|
How to Use Mv command in Linux
Use the mv command to move Linux and UNIX files/directories from the source directory to the destination directory. To move a file, specify mv followed by the source and destination. For example,
mv source_file destination_file
This command requires at least two arguments - source file or directory and destination file or directory. If both source and destination files are on the same file system, then this command renames the file. Otherwise, the file or directory is copied from one place to another.
Mv Command Examples
The following practical mv command examples will show you how this command-line utility works.
Move a File to a Directory
To move a file from one directory to another, pass the file name that you want to move and the target directory name:
mv users.txt docs
Move Multiple Files to a Directory
To move multiple files in a single command, pass the list of filenames that you want to move and the destination directory name:
mv dev.txt qa.txt admin.txt docs
Move a Directory to another Directory
Moving a directory to another directory is similar to moving a file. Specify the source and the destination directory names as the Linux mv command arguments:
mv design admin
Rename a File using mv
To rename a file, just specify the source file name followed by the new filename. Both source and destination file location should be the same.
In the following example, the file named
doc.txt is renamed to
api.txt which both reside in the current directory.
mv doc.txt api.txt
When a file is renamed using the mv command in Linux, the inode number of the file remains intact. The inode number is changed only when the file is moved to a different directory.
Rename a Directory using mv
We can also rename a directory like we rename a file. The following command rename the directory named
specs where both reside in the same location:
mv admin specs
The inode number remains the same for a directory as it does for a file. The inode number changes only when you move a file to a different directory.
Prompt Overwriting Destination File
We can instruct the mv command to prompt before overwriting a file. This option is useful when moving multiple files and we are not sure if a file with the same name already exists in the destination directory.
mv -i scenario.txt docs
Here we can choose to either overwrite an existing file by typing yes or cancel overwriting by typing no.
As a precaution against overwriting, it's even a good idea to create an alias for mv to mv -i.
Backup Existing File
To avoid overwriting the existing file, you can also create a backup of the existing file and then move the source file. The backup file will have a tilde (~) character added to the file name.
mv -b users.txt docs/
You can further rename the backup file using this command.
To see what the mv command is exactly doing, use the
mv -v apis.txt cases.txt admin/
The command output shows progress for each file in a single line.
Treat Destination as a normal file
The -T option in the mv command is used to explicitly specify that the destination of the move operation is a file and not a directory. If the destination is a file and the
-T option is not specified, mv will treat the destination as a directory and will move the source file or directory into it.
mv file1.txt /path/to/destination/file1-moved.txt -T
This will move file1.txt to the location /path/to/destination/file1-moved.txt, and it will overwrite the destination file if it already exists.
Whereas the -t option in the mv command is used to explicitly specify the target to move in is a directory. This makes sure the target directory exists.
mv docs.txt -t /home/user/backup
This moves the file docs.txt to directory /home/user/backup and fails if there is no directory.
Mv Command Options
The following table describes various command-line options of the mv command that you can use with the mv command to perform different operations.
|Prompts before overwriting an existing destination file|
|Creates backup of the existing file|
|Overwrites existing read-only files without any prompt|
|Prevents the files from overwriting|
|Moves files in update mode. The file is moved only if the source file is newer than the destination file, or the destination file is missing|
|Shows the move operation progress on the terminal window|
In this tutorial, we learned how to use the mv command to move and rename directories and files on your Linux or UNIX computer. The mv command deletes the source file or directory, so you must be careful while using this command. This utility is part of the default installation in all Linux distributions, including Ubuntu, Red Hat, Fedora, and Debian.
For more information browse to mv man page or type
mv --help on the terminal.
Navigate all-in-one place of Linux Commands for more learning.