How to rename and move files and directories on Linux

Overview

In this tutorial, you will learn how to use the mv command to move and renames files and directories on Linux.

Files and directories on Linux as very similar, from a filesystem point of view. This means the operations done on one can be also done on the other, with very few exceptions.

As such, you will notice that commands used to perform actions on files are identical with directories.

Rename files on Linux

To rename a file in Linux you use the mv command. The command accepts two or more arguments. For renaming files, only two arguments are needed, which are the source file and the target file.

The mv command will take the source file specified and rename it to the target file.

mv old-filename new-filename

To rename a file named student1 to student10, for example, you would run the following command.

mv student1 student10

Provided the file target is the same directory, all file attributes will remain, including permissions.

Moving a file on Linux

To move a file to another location we use the same method as renaming a file, except the file path should be different.

mv source-file /new/path

For example, to move a file from /home/student1/lab-work.log to /var/labs/student1/lab-work.log, you would run the following command.

mv /home/student1/lab-work.log /var/labs/student1/lab-work.log

Moving and Renaming files on Linux

A file can be renamed during a move process using the mv command. You simply give the target path a different name. When mv moves the file, it will be given a new name.

mv old-filename /new/path/new-filename

For example, to move a file named student1.txt to /var/students and rename it to class1-student1.txt, you would run the following command.

mv student1.txt /var/students/class1-student1.txt

Moving Multiple files on Linux

The mv command accepts multiple source files, which means we can move two or more files at the same time. When executing the mv command, each file listed will be considered a source with the last path being the exception. The last path will be treated as the target.

mv source-file-1 source-file-2 target-path

For example, to move student1.txt and student2.txt to /var/students, you would run the following command.

mv student1.txt student2.txt /var/students

Moving Directories on Linux

Moving directories work the same as moving files. We specify the source directory and give a target directory.

mv source-directory target-directory

For example, to move a directory path /tmp/logs to ~/data/logs you would run the following command.

mv /tmp/logs ~/data/logs

Moving Multiple Directories on Linux

As with files, multiple directories can be moved to a new location. We simply specially all of the directories to be moved, and then give a target directory for them to be moved to.

mv /dir/1 /dir/2 /dir/3 /target/path

Verbose Output Flag

The mv command will perform its operations silently. No output will be printed to the screen while files or directories are being moved or renamed.

To instruct the mv command to print out a log of actions being taken, you can use the -v flag. This flag enabled verbosity, which is helpful for auditing.

mv -v student1.txt student2.txt

Do Not Overwrite Existing Files

To force the mv command to not overwrite existing files when moving or renaming a file, use the -n flag.

In the example below, if the student2.txt file already exists, then the mv command will not rename the file and it will exit with an error.

mv -n student1.txt student2.txt

Do Not Prompt to Confirm Overwrites

If you want to forcefully move files or directories and overwrite paths that already exist, you can use the -f flag. This is effective for overwriting old, stale files or directories with new ones with the same name.

mv -f /var/data/logs /tmp/data/logs