📒 

Renaming files in Linux is a common task, but the approach to renaming can vary depending on your needs and the tools you want to use. This article will cover different methods for renaming files in Linux, ranging from simple file renaming with commands like mv to more complex batch renaming with utilities like rename and find.

1. Renaming Files with mv

The most basic and commonly used command to rename files in Linux is the mv (move) command. The mv command is mainly used for moving files and directories, but it also serves as a renaming tool.

Basic Syntax

The syntax for renaming a file is straightforward:

mv old_filename new_filename

Example

To rename a file called file1.txt to file2.txt, run:

mv file1.txt file2.txt

This command renames file1.txt to file2.txt in the same directory.

Renaming Multiple Files

If you need to rename multiple files one by one, you can do this with multiple mv commands, but that can become tedious. For batch renaming, it’s better to use more advanced tools like rename.

2. Renaming Files with rename

The rename command is a powerful utility for renaming multiple files at once. It allows you to use Perl-based regular expressions to rename files in bulk, which can save a lot of time for complex renaming tasks.

Installing rename

On some Linux distributions, you may need to install the rename tool. You can install it using your package manager:

  • Debian/Ubuntu:
    sudo apt install rename
  • CentOS/RHEL:
    sudo yum install prename

Basic Syntax

The syntax for the rename command is:

rename 's/old_pattern/new_pattern/' files

Example

Suppose you have a set of files like file1.txt, file2.txt, and file3.txt, and you want to change all .txt files to .md. You can use:

rename 's/\.txt$/\.md/' *.html

This command uses a regular expression to replace .txt at the end of each filename with .md.

Renaming Files in a Batch

You can also perform more complex batch renaming, such as prefixing or suffixing filenames.

  • To add a prefix (e.g., “new_”) to all .txt files:
    rename 's/^/new_/' *.html
  • To add a suffix (e.g., “_backup”) before the file extension:
    rename 's/\.txt$/_backup.html/' *.html

3. Renaming Files Using find and mv

Another way to rename files, especially when dealing with files in multiple directories, is by combining the find command with mv. This approach gives you more flexibility when renaming files based on specific criteria.

Example

Let’s say you want to find all .log files in the current directory and rename them to .txt:

find . -name "*.log" -exec bash -c 'mv "$1" "${1%.log}.txt"' -- {} \;
  • find . -name “*.log”: Finds all files with a .log extension in the current directory.
  • -exec bash -c ‘mv “$1” “${1%.log}.txt”‘ — {} \;: Executes the mv command to rename the files by stripping the .log extension and adding .txt.

This method is powerful when you need to perform renaming across a large directory tree.

4. Renaming Files with a Graphical Interface

If you prefer using a graphical interface to rename files, most Linux desktop environments provide file managers that allow simple renaming. Common file managers include:

  • Nautilus (for GNOME)
  • Dolphin (for KDE)
  • Thunar (for XFCE)

Steps for Renaming in a File Manager

  1. Open your file manager.
  2. Navigate to the file you want to rename.
  3. Right-click on the file and select Rename.
  4. Type the new name and press Enter.

This is useful for users who prefer a point-and-click method for managing files.

5. Renaming Files Using a Bash Script

For more advanced users, you can create a custom Bash script to automate file renaming tasks. This is particularly useful for repetitive renaming tasks or specific file patterns.

Example Bash Script

1. Create a Shell Script File

You will save the script in a file so that you can execute it later. To create the file, use a text editor such as nano.

nano rename_script.sh

2. Add Your Script to the File

#!/bin/bash
for file in *.txt; do
new_name="${file%.txt}.md"
mv "$file" "$new_name"
done

3. Make the Script Executable

Now, you need to make the script executable so you can run it. Use the following command to give the script execution permissions:

chmod +x rename_script.sh
4. Run the Script

You can now run the script in the terminal. It will rename all .txt files in the current directory to .md.

./rename_script.sh

5. Verify the Changes

After running the script, you can verify the renaming of the files by listing the contents of the directory:

ls

Conclusion

Renaming files in Linux can be done in various ways, depending on the complexity of your task. For simple renaming, the mv command is sufficient, but for batch renaming, you can use the rename command or combine find with mv for more flexibility. Additionally, graphical file managers and custom Bash scripts provide other ways to handle renaming efficiently.

Choose the method that best suits your needs, and you’ll be able to manage file renaming easily on your Linux system.

Let me know if you need further details or help!