Skip to main content

Command Palette

Search for a command to run...

How to Delete Non-Empty Directory in Linux

Published
5 min readView as Markdown

Deleting a non-empty directory in Linux can seem tricky if you're new to the command line. You might have tried the usual rmdir command only to find it refuses to delete directories that still contain files or subdirectories. But don’t worry — I’m here to guide you through the easiest and safest ways to remove those stubborn directories.

Whether you’re managing files on your personal Linux machine or working on a server, knowing how to delete non-empty directories efficiently is essential. In this article, I’ll walk you through several methods, from simple commands to graphical tools, so you can choose what fits your needs best.

Why Can't You Delete Non-Empty Directories with rmdir?

The rmdir command is designed to remove empty directories only. If you try to delete a directory that contains files or other directories, it will give you an error like:

rmdir: failed to remove 'folder': Directory not empty

This safety feature prevents accidental loss of data. Linux requires you to explicitly tell it to delete all contents inside a directory before removing the directory itself.

Using rm Command to Delete Non-Empty Directories

The most common way to delete a non-empty directory is by using the rm command with the recursive option.

How to Use rm -r

The -r (or --recursive) flag tells rm to delete the directory and everything inside it, including subdirectories and files.

rm -r directory_name

This command will delete the directory named directory_name and all its contents.

Adding the Force Option -f

Sometimes, you might encounter permission issues or prompts asking for confirmation. To bypass these, you can add the -f (force) option:

rm -rf directory_name
  • -r: Recursively delete contents.
  • -f: Force deletion without prompts.

Warning: Be very careful with rm -rf because it deletes everything without asking. A small typo can cause serious data loss.

Practical Tips When Using rm -rf

  • Always double-check the directory name before running the command.
  • Avoid running rm -rf as the root user unless necessary.
  • Use tab completion to avoid typos.
  • Consider running ls directory_name first to confirm contents.

Using find Command for Complex Deletions

If you want to delete directories based on specific criteria, find is very powerful.

Example: Delete All .tmp Files and Their Parent Directories

find /path/to/directory -name '*.tmp' -exec rm -rf {} +

This command finds all files ending with .tmp and deletes them along with their directories.

Deleting Empty Subdirectories After Removing Files

Sometimes, you want to clean up empty directories after deleting files:

find /path/to/directory -type d -empty -delete

This deletes all empty directories inside the specified path.

Using rmdir with --ignore-fail-on-non-empty

If you want to delete multiple directories but ignore those that are not empty, you can use:

rmdir --ignore-fail-on-non-empty directory_name

This command will only delete empty directories and skip non-empty ones without throwing an error.

Deleting Non-Empty Directories Using GUI Tools

If you prefer not to use the command line, most Linux desktop environments provide graphical file managers that can delete non-empty directories easily.

GNOME Files (Nautilus)

  • Right-click the folder.
  • Select "Move to Trash" or "Delete."
  • Confirm the deletion if prompted.

KDE Dolphin

  • Right-click the folder.
  • Choose "Delete" or press Shift + Delete for permanent removal.
  • Confirm the action.

These GUI methods handle recursive deletion behind the scenes, making it simple for users who prefer visual tools.

Safety Measures Before Deleting Directories

Deleting directories, especially non-empty ones, can be risky. Here are some safety tips:

  • Backup Important Data: Always back up files before deleting.
  • Use ls to Inspect: Check directory contents with ls -l directory_name.
  • Dry Run with find: Use find to list files before deleting.
  • Avoid Running as Root: Use a normal user account to reduce risks.
  • Use Trash Instead of Permanent Delete: When possible, move files to Trash first.

Alternative: Moving Directory Instead of Deleting

If you’re unsure about deleting, consider moving the directory to a backup location:

mv directory_name /path/to/backup/

This way, you keep the data safe and free up the original location.

Troubleshooting Common Issues

Permission Denied Errors

If you get permission errors, try:

sudo rm -rf directory_name

But use sudo cautiously, as it gives full system access.

Directory Not Found

Make sure you’re in the correct path or provide the full path:

rm -rf /home/user/directory_name

Files with Special Characters

If filenames contain spaces or special characters, use quotes:

rm -rf "directory name with spaces"

Or escape spaces with backslashes:

rm -rf directory\ name\ with\ spaces

Summary Table of Commands

CommandDescriptionUse Case
rmdir directory_nameDeletes empty directory onlySafe for empty folders
rm -r directory_nameDeletes directory and contents recursivelyNon-empty directories
rm -rf directory_nameForce delete without promptsQuick, but risky
find ... -deleteDelete files/directories based on criteriaComplex or selective deletions
rmdir --ignore-fail-on-non-emptyDelete empty directories, ignore othersBatch deletion of empty folders

Conclusion

Deleting non-empty directories in Linux is straightforward once you know the right commands. The rm -r and rm -rf commands are your go-to tools for removing directories with contents. However, always exercise caution to avoid accidental data loss. Using GUI tools can be a safer option if you prefer a visual approach.

Remember to check directory contents before deleting and consider backing up important data. With these tips and commands, you’ll confidently manage your Linux directories without stress.


FAQs

How do I delete a directory with files inside it?

Use the command rm -r directory_name to delete the directory and all its contents recursively.

What does the -f option do in rm -rf?

The -f option forces deletion without asking for confirmation, even if files are write-protected.

Can I recover files after deleting a directory with rm -rf?

No, rm -rf permanently deletes files. Recovery is difficult and requires special tools, so be careful.

Is there a safer way to delete directories?

Yes, you can move directories to Trash using GUI file managers or use commands that move files instead of deleting.

Why does rmdir fail on non-empty directories?

Because rmdir only removes empty directories to prevent accidental data loss. Use rm -r for non-empty directories.

More from this blog

L

LinuxBloke | Linux Tips, Tricks & Troubleshooting

672 posts