How to Rename Files and Directories on Linux

Introduction

Before we begin talking about how to rename files and directories on Linux let's briefly understand – What is Directory?

A directory is a digital storage space that organizes and categorizes information. It acts as a hierarchical structure and allows users to navigate and locate specific files or data quickly. Directories are commonly used to store files on computers or websites, providing easy access and efficient management.

By using directories, individuals and businesses can effortlessly locate and retrieve information, enhancing productivity and organization. With their intuitive design and efficient functionality, directories play a key role in effectively managing data and optimizing workflow efficiency.

In this tutorial, you will rename files and directories on Linux. We will also address a few FAQs on how to rename files and directories on Linux.

Advantages of Directory

  1. Easy Organization: Directories simplify file management by providing a hierarchical structure, making it convenient to categorize and store information.
  2. Quick Navigation: With directories, users can easily locate and access specific files, saving time and effort in searching through extensive data.
  3. Efficient File Retrieval: Directories enable swift file retrieval, allowing users to find and retrieve information promptly, enhancing productivity.
  4. Streamlined Collaboration: Directories facilitate seamless collaboration by allowing multiple users to access and share files, fostering teamwork and coordination.
  5. Enhanced Data Security: Directories offer enhanced data security measures, ensuring that files are protected from unauthorized access, reducing the risk of data breaches or loss.

Rename Files with mv Command

To rename or move files from one location to another, you can use mv command. Following will be the syntax for the mv command:

mv [OPTIONS] source destination

You can have both files and directories as the source and the destination can be a single file or directory.

  • If there are multiple files in the source then the destination should be a directory.
  • If there is only a single file in the source and the target is an existing directory then the file will be moved to that particular directory.
  • Rename a file by specifying a single file as a source and a single file as a destination target.

Run the following command to rename the file file1.txt to file2.txt:

mv file1.txt file2.txt

Renaming Multiple Files with mv Command

Only one file at a time can be renamed using mv command. To be able to rename multiple files with mv command, it can be used along with some other commands like find or you can also use for or while loops inside the bash.

Below is an example showing the way in which you can rename all .html files to the files with .php  extension.

for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

The same result can be achieved using the find command like below:

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;

The find command is passing all the files with .html extension in the current directory to mv one by one using the -exec option.

Renaming Files with rename Command

rename command can be used to rename multiple files. This command requires more knowledge of regular expressions hence it is more advanced.

rename command has two versions with different syntaxes. We will be using the Perl version in this tutorial.

  • If you want to install rename on Ubuntu and Debian, use the following command:
sudo apt install rename
  • For CentOS and Fedora:
sudo yum install prename
  • For Arch Linux
yay perl-rename ## or yaourt -S perl-rename

Check below the syntax of rename command:

rename [OPTIONS] perlexpr files

With rename command, files are renamed based on the perlexpr regular expression. You can read more about Perl regular expressions here.

Use the following command to change files with .html extension to .php:

rename 's/.html/.php/' *.html

Use the -n option to print names of files to be renamed, without renaming them.

rename -n 's/.html/.php/' *.html

You will get the output like below:

Output

rename(file-20.html, file-20.php)
rename(file-12.html, file-12.php)
rename(file-34.html, file-34.php)
rename(file-70.html, file-70.php)
rename(file-28.html, file-28.php)

If you want to overwrite the existing command, use -f option:

rename -f 's/.html/.php/' *.html

Check the below examples to understand a few more common examples of the rename command:

  • Replace spaces in filenames with an underscore
rename 'y/ /\_/' *
  • Convert the filename to lowercase
rename 'y/A-Z/a-z/' *
  • Convert the filename to uppercase
rename 'y/a-z/A-Z/' *

FAQs to Rename Files and Directories on Linux

Is it possible to rename multiple files simultaneously?

 Yes, you can use wildcard characters with mv command to rename multiple files. For example, mv *.txt newdir will rename all 'txt' files to 'newdir'.

Can I change the extension of a file in Linux?

Yes, you can change the file extension by simply renaming the file with the new extension using the mv command.

How can I rename a directory in Linux?

Use the mv command to rename directories as well. Just provide the current directory name and the desired new name, like this: mv olddir newdir.

What happens if I try to rename a file to an existing filename?

If the new filename already exists in the same directory, the old file will be replaced by the new one with the same name.

How can I preserve file permissions while renaming?

By default, file permissions are preserved during renaming, so there's no need to worry about them being changed.

Can I rename files and directories in different locations?

Yes, you can specify the full path of the file/directory along with the new name to rename it in a different location on Linux.

Are there any limitations or restrictions on file/directory renaming?

Renaming is subject to permissions, so you must have proper read/write access to the file/directory and its parent directory in order to rename it.

Conclusion

We hope this detailed guide helped you understand the use-cases of rename and mv command.

Few other commands like mmv can be used to rename the files. New Linux users can use GUI batch rename tools such as the Métamorphose .

If you have any queries or doubts, please leave them in the comment below. We'll be happy to address them.