mv is one of the must known commands in Linux. mv stands for move and is essentially used for moving files or directories from one location to another.
The syntax is similar to the cp command in Linux however there is one fundamental difference between these two commands.
You can think of the cp command as a copy-paste operation. Whereas the mv command can be equated with the cut-paste operation.
Which means that when you use the mv command on a file or directory, the file or directory is moved to a new place and the source file/directory doesn’t exist anymore. That’s what a cut-paste operation, isn’t it?
cp command = copy and paste
mv command = cut and paste
mv command can also be used for renaming a file. Using mv command is fairly simple and if you learn a few options, it will become even better.
7 practical examples of the mv command
Let’s see some of the useful examples of the mv command.
1. How to move a file to different directory
The first and the simplest example is to move a file. To do that, you just have to specify the source file and the destination directory or file.
mv source_file target_directory
This command will move the source_file and put it in the target_directory.
2. How to move multiple files
If you want to move multiple files at once, just provide all the files to the move command followed by the destination directory.
mv file1.txt file.2.txt file3.txt target_directory
You can also use glob to move multiple files matching a pattern.
For example in the above example, instead of providing all the files individually, you can also use the glob that matches all the files with the extension .txt and moves them to the target directory.
mv *.txt target_directory
3. How to rename a file
One essential use of mv command is in renaming of files. If you use mv command and specify a file name in the destination, the source file will be renamed to the target_file.
mv source_file target_directory/target_file
In the above example, if the target_fille doesn’t exist in the target_directory, it will create the target_file.
However, if the target_file already exists, it will overwrite it without asking. Which means the content of the existing target file will be changed with the content of the source file.
I’ll show you how to deal with overwriting of files with mv command later in this tutorial.
You are not obliged to provide a target directory. If you don’t specify the target directory, the file will be renamed and kept in the same directory.
Keep in mind: By default, mv command overwrites if the target file already exists. This behavior can be changed with -n or -i option, explained later.
4. How to move a directory in Linux with mv command
You can use mv command to move directories as well. The command is the same as what we saw in moving files.
mv source_directory target_directory
In the above example, if the target_directory exists, the entire source_directory will be moved inside the target_directory. Which means that the source_directory will become a sub-directory of the target_directory.
5. How to rename a directory
Renaming a directory is the same as moving a directory. The only difference is that the target directory must not already exist. Otherwise, the entire directory will be moved inside it as we saw in the previous directory.
mv source_directory path_to_non_existing_directory
6. How to deal with overwriting a file while moving
If you are moving a file and there is already a file with the same name, the contents of the existing file will be overwritten immediately.
This may not be ideal in all the situations. You have a few options to deal with the overwrite scenario.
To prevent overwriting existing files, you can use the -n option. This way, mv won’t overwrite existing files.
mv -n source_file target_directory
But maybe you want to overwrite some files. You can use the interactive option -i and it will ask you if you want to overwrite existing file(s).
mv -i source_file target_directory mv: overwrite 'target_directory/source_file'?
You can enter y for overwriting the existing file or n for not overwriting it.
There is also an option for making automatic backups. If you use -b option with the mv command, it will overwrite the existing files but before that, it will create a backup of the overwritten files.
mv -b file.txt target_dir/file.txt ls target_dir file.txt file.txt~
By default, the backup of the file ends with ~. You can change it by using the -S option and specifying the suffix:
mv -S .back -b file.txt target_dir/file.txt ls target_dir file.txt file.txt.back
You can also use the update option -u when dealing with overwriting. With the -u option, source files will only be moved to the new location if the source file is newer than the existing file or if it doesn’t exist in the target directory.
- -i : Confirm before overwriting
- -n : No overwriting
- -b : Overwriting with backup
- -u : Overwrite if the target file is old or doesn’t exist
7. How to forcefully move the files
If the target file is write protected, you’ll be asked to confirm before overwriting the target file.
mv file1.txt target mv: replace 'target/file1.txt', overriding mode 0444 (r--r--r--)? y
To avoid this prompt and overwrite the file straightaway, you can use the force option -f.
mv -f file1.txt target
If you do not know what’s write protection, please read about file permissions in Linux.
You can further learn about mv command by browsing its man page. However, you are more likely to use only these mv commands examples I showed here. FYI, you may also use rename command for renaming multiple files at once.
I hope you like this article. If you have questions or suggestions, please feel free to ask in the comment section below.