In this article, I will take you through the usage of mv command in Linux. mv command is one of the linux terminal commands used on daily basis by Linux and System Admin across the world to perform day to day files and directories operations. So it is very important to understand the options and features available with mv command so that one can understand its use in effective manner.
What is mv ?
mv command in Linux is used to move and rename files and directories.
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
MV Command in Linux
Also Read: 16 Best ls command examples in Linux
Check Linux mv command version
If you want to check mv command version, you can do that by running
mv --version command as shown below.
[root@localhost ~]# mv --version mv (GNU coreutils) 8.22 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://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. Written by Mike Parker, David MacKenzie, and Jim Meyering.
Move file in Linux without any option
If you want to simply move the file hello.txt without any option to destination folder test, you can do that by launching command
mv hello.txt test.
[root@localhost ~]# mv hello.txt test/
Do not Overwrite File
If you want to prevent any overwriting of file in destination folder then you need to use
-n with command to check if the file is already available in destination directory or not. If it is there, it will not overwrite the file and will simply ignore the move command.
[root@localhost ~]# mv -n hello.txt test/
Check overwriting of file through Interactive Mode
If you want to check if the file is getting overwritten, you can do it through
-i option. By default, usually you will see this option set in your system by using alias mv command.
[root@localhost ~]# mv -i hello.txt test/ mv: overwrite ‘test/hello.txt’?
Forcefully Overwriting the File
If you do not want System to throw any notification of overwriting the file, then you can launch forceful overwriting by
-f option as shown below.
[root@localhost ~]# mv -f hello.txt test/
Create a backup before overwriting the file
If you want to take backup of the file before overwriting them, you can do it by using
-b option. When you launch the command with
-b option, it will take backup of the destination file by renaming the file with the suffix ~ at the end of the file and then it will overwrite the file.
This command sometimes is very helpful in saving our previous file before we accidentally overwrite them. If you make a habit of using this option when you don’t know if the destination folder have this file or not, then you will probably never accidentally end up in overwriting them.
[root@localhost test]# mv --backup hello.txt test/
Check the suffix of the backup’ed file.
[root@localhost test]# ls -lrt total 8 -rw-r--r-- 1 root root 19 Jan 15 02:00 hello.txt~ -rw-r--r-- 1 root root 3893 Jan 15 02:13 hello.txt
Rename the backup using Custom Suffix
If you want to use some other suffix instead of System provided
~ suffix to rename your destination file while overwriting them, you can do it by using
--suffix option as shown below.
[root@localhost ~]# mv -S .bkp hello.txt test/ mv: overwrite ‘test/hello.txt’? y
Notice that now suffix is .bkp instead of ~ which can be seen at the end of the file hello.txt.
[root@localhost test]# ls -lrt total 8 -rw-r--r-- 1 root root 3893 Jan 15 02:21 hello.txt.bkp -rw-r--r-- 1 root root 3893 Jan 15 02:22 hello.txt
Set SELinux Security Context
If you want to set the SELinux Security Context of destination file to default, you can do that by using
-Z option with mv command.
[root@localhost ~]# mv -Z hello.txt test/
Move only if Source is newer or destination file missing
If you want to move a file only when source file is having some update over the destination file or if the destination file is missing, then you can use
-u option to do that as shown below.
[root@localhost ~]# mv -u hello.txt test/
Using verbose option to monitor the transfer of file
If you want monitor the output of mv command in linux, then you can do it through by using verbose
-v option as shown below.
[root@localhost ~]# mv -v hello.txt test/ mv: overwrite ‘test/hello.txt’? y ‘hello.txt’ -> ‘test/hello.txt’
Rename File in Linux
If you want to use
mv command in renaming files, you can do that by running below command.
[root@localhost ~]# mv hello.txt example.txt
Check the file after renaming it.
[root@localhost ~]# ls -lrt example.txt -rw-r--r-- 1 root root 3893 Jan 15 03:32 example.txt
Rename Directory in Linux
If you want to rename any directory name, you can use
mv command to do that as shown below.
[root@localhost ~]# mv test hello
Notice that all the contents available in test directory is now showing in hello directory.
[root@localhost hello]# ls -lrt total 4 -rw-r--r-- 1 root root 3893 Jan 15 03:18 hello.txt
Move all the contents from directory using -t option
Sometimes it might happen that running mv command for a directory does not know the difference if you are trying to move the directory and its all contents to target directory and just trying to rename it. So to avoid this condition, you can use
-t option with mv command. This will make sure that you are transferring directory and its contents to target directory and not renaming it.
[root@localhost ~]# mv -t java/ hello/
Notice from below output that hello directory and all its contents are moved to java target directory.
[root@localhost java]# ls -lrt total 8 -rw-r--r-- 1 root root 336 Dec 12 07:54 example.java -rw-r--r-- 1 root root 3893 Jan 15 01:55 abc.txt drwxr-xr-x 2 root root 23 Jan 15 03:18 hello
Check mv help command
If you want to check all the options available with mv command, you can check by using
[root@localhost ~]# mv --help Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... 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 -f, --force do not prompt before overwriting -i, --interactive prompt before overwrite -n, --no-clobber do not overwrite an existing file
Check mv command alias
If you want to check any aliases set for mv command in Linux, you can check it by using
alias mv command in Linux.
[root@localhost hello]# alias mv alias mv='mv -i'
Few More Options
|--backup[=CONTROL]||make a backup of each existing destination file|
|-b||like --backup but does not accept an argument|
|-f, --force||do not prompt before overwriting|
|-i, --interactive||prompt before overwrite|
|-n, --no-clobber||do not overwrite an existing file|
|-S, --suffix=SUFFIX||override the usual backup suffix|
|-u, --update||move only when the SOURCE file is newer than the destination file or when the destination file is missing|
|-v, --verbose||explain what is being done|
|-Z, --context||set SELinux security context of destination file to default type|
Also Read: 16 zip command examples in Linux/Unix
Reference: mv man page
- linux move file
- move directory linux
- rename directory linux
- terminal move file
- rename command in linux
- move folder linux