How to remove or delete a directory in Linux

Directories in Linux are essentially folders, which serve as containers for files and other directories, helping organize the data stored on a system. As you manage and maintain a Linux system, you'll often find yourself needing to delete certain directories for various reasons. This article will walk you through the various methods of deleting directories in Linux, from simple commands for removing empty directories to more advanced techniques for dealing with directories that contain files and sub-directories.

In this page

  • How to delete empty directories with the rmdir command
  • How to delete non-empty directories with the rm command
  • Risks involved in directory deletion and best practices
  • How can Eventlog Analyzer help monitor deleted directories in Linux?

What are the necessary prerequisites when deleting a directory in Linux?

Permissions play an important role in directory management on Linux systems. Every file and directory in Linux has associated permissions that determine who can read, write, or execute the contents.

These permissions are assigned to three types of users:

  • Owner: The user who owns the file or directory.
  • Group: A group of users who share access rights.
  • Others: All other users on the system.

For directory deletion, you must have the appropriate write permissions on the directory you want to delete and on its parent directory. Without the necessary permissions, you will encounter errors when trying to delete directories.

Checking permissions to delete a directory in Linux

You can check the permissions of a directory using the ls -l command:

$ ls -ld /home/user/documents

drwxr-xr-x 2 user user 4096 Aug 21 14:30 /home/user/documents

In the output:

  • d: Indicates that it is a directory.
  • rwx: The owner (user) has permission to read, write, and execute.
  • r-x: The group has permission to read and execute, but not to write.
  • r-x: Others also have permission to read and execute, but not to write.

Understanding and managing permissions ensures that you can delete directories when necessary while avoiding permission-related errors.

How to remove or delete a directory in Linux

There are different ways to remove or delete a directory in Linux depending on whether the directory is empty or contains files. Here are some of the commonly used commands to delete directories in Linux.

How to remove empty directories with the rmdir command

The rmdir command in Linux is a straightforward utility designed specifically for removing empty directories. If a directory does not contain any files or sub-directories, rmdir can be used to delete it easily.

The basic syntax of the rmdir command is: rmdir <directory_name>

  • <directory_name>: The path to the directory you want to delete.

For example, to delete an empty directory named old_directory located in /home/user/, you would use the following command: rmdir /home/user/old_directory

If the directory is empty, it will be deleted without any further prompts.

The rmdir command comes with a couple of options for effective removal of empty directories.

Command Description Syntax Output
rmdir -p Removes each selected directory and their parent directories if they are empty. rmdir -p <directory_name> No output if successful; error if not empty
rmdir --ignore-fail-on-non-empty Ignores errors if the directory is not empty. rmdir --ignore-fail-on-non-empty <directory_name> No output if successful; ignores the errors if the directory is not empty
rmdir -v Verbose mode. Displays a confirmation prompt before attempting to remove each selected directory. rmdir -v <directory_name> Displays a message for each removed directory
Removing empty directories with rmdir command

The rmdir command also allows you to delete multiple directories at once. The syntax for deleting multiple directories is: rmdir directory_1 directory_2 directory_3

How to delete non-empty directories with rm -r command

The rm -r command is a more versatile than rmdir, it's capable of deleting directories whether or not they contain files or sub directories.

The basic syntax of the rm command is: rm option <directory_name>

Similar to rmdir command, the rm command also comes with several options, as listed below:

Command Description Syntax
rm Removes a file or directory. rm file_name or directory_name
rm -d Removes an empty directory. rm -d directory_name
rm -r Recursive removal. Removes a directory and its content recursively. This option will delete each selected directory, including the sub-directories and files. rm -d directory_name
rm -f Forcefully removes each selected directory without a confirmation prompt. This option is often used when deleting a write-protected directory without a confirmation. rm -f directory_name
rm -i Displays a confirmation prompt before attempting to remove each selected directory. This option is particularly useful when dealing with directories that contain important files, as it allows you to review and confirm each deletion individually. rm -i directory_name
rm -v Verbose mode. Displays an interactive confirmation prompt before attempting to remove each selected directory. rm -v directory_name
Removing non-empty directories with rmdir command

Like the rmdir command, rm command also offers users the flexibility to delete multiple directories in one go. The syntax for removing multiple directories is:

rmdir option(s) directory_1 directory_2 directory_3

You can also use multiple options in a single command. For instance, if you want to remove a write-protected directory and its contents—without a confirmation prompt before attempting to remove each directory—you can use the following command.

rmdir -rfv Sample_Directory

This command will recursively delete all the directories, sub-directories, and files in the directory Sample_Directory, and it will do so forcefully and verbosely.

What are the risks involved with deleting a directory in Linux?

When you delete a directory, you’re not just removing the directory, but you’re also removing all the files and sub-directories contained within it. This is why directory deletion requires careful consideration and a clear understanding of the contents you’re removing.

  • Data loss: One of the most significant risks associated with deleting directories in Linux is the potential for irreversible data loss. Unlike files moved to a trash or recycle bin in graphical interfaces, files and directories deleted via the command line are permanently removed from the filesystem.
  • Irreversible action: Once a directory is deleted using command-line tools, it’s gone. There’s no built-in "undo" feature in the terminal, and recovering deleted directories can be challenging or impossible without a backup. This makes it crucial to double-check the directories you intend to delete before executing the command.
  • Impact on the system: If you accidentally delete system directories or directories containing critical configuration files, it can lead to system instability, loss of functionality, or even render your system unbootable. This is particularly true when working with directories in /etc/, /var/, or /usr/, which are integral to the system’s operation.
  • Use of wildcards: The command line supports the use of wildcards, which can expand a command to affect multiple files or directories. While powerful, wildcards can also be dangerous if used carelessly. For example, a command like rm -rf /home/user/* will delete everything in the user’s home directory, which may include important data.

What are the best practices that can be adopted when deleting a directory in Linux?

To mitigate the above-mentioned risks while deleting a directory in Linux, it is essential to follow these best practices:

  • Backup important data: It is best to create a backup of important files and directories always before deletion. Tools like rsync, tar, or even simple copying (cp) can help create backups that can be restored in case of accidental deletion.
  • Use interactive mode: Commands like rm -ri can be used to prompt you for confirmation before each deletion, providing an extra layer of safety.
  • Double-check commands: Always carefully review the command and the directory path before pressing Enter. A small mistake in the path or an unintended use of wildcards can lead to catastrophic data loss.

By understanding the distinction between files and directories—and the associated risks of data loss—you’ll be better equipped to manage your Linux file system safely and effectively. This foundational knowledge will guide you through the rest of the process, helping you avoid common pitfalls and ensuring that your directory deletions are intentional and controlled.

How can Eventlog Analyzer help monitor deleted directories in Linux?

As a system administrator, it is often essential to monitor Linux events centrally, particularly those related to file and directory activities. ManageEngine EventLog Analyzer—a comprehensive log management and compliance tool—helps you audit Linux events (including system and security events). This solution acts as a central syslog server to collect, parse, correlate, search, and archive logs from sources including Linux systems and servers.

EventLog Analyzer's file integrity monitoring (FIM) capability lets you monitor any changes to the files and directories of your Linux environment and ensure the integrity of data stored in it. It audits the user activities, changes to files and directories, permission changes, and more to spot unauthorized accesses and change attempts.

This log management solution:

  • Automatically collects logs from various sources such as Linux audit logs, syslogs, and shell commands. It specifically tracks commands—like rm -r and rmdir—capturing the timestamp, user account, terminal used, and even the directory path involved.
  • Correlates directory deletion events with other system activities, allowing you to build a complete picture of what led to the deletion. This is critical for forensic analysis in case of data breaches or accidental deletions.
  • Reports and alerts on critical activities including suspicious Linux user logons, critical file deletions, failed password changes, users added to critical security groups, and more.

Further, for organizations bound by regulations like GDPR, HIPAA, or PCI DSS, regular reporting on file and directory deletions is not just best practice—it’s mandatory. EventLog Analyzer simplifies this process by generating comprehensive reports that detail every directory deletion across your Linux environment.

What's next?

Explore ManageEngine EventLog Analyzer with a free 30-day trial.