Removing a directory in Linux is a common task for managing files and directories on your system. While graphical tools are available, using the command line is often necessary, especially when working remotely or in a server environment. Command-line tools offer precision and control, making them the preferred method for many users.

There are two main commands to remove directories in Linux: rmdir and rm. The rmdir command is used to delete empty directories, while the rm command can remove directories that contain files and subdirectories. Understanding when to use each command is essential for effective file system management.

When using these commands, it’s important to know the correct options and syntax to avoid unintended data loss. For example, the rm command can delete non-empty directories if used with the correct options. Learning these commands helps ensure that you can remove directories safely and efficiently in any Linux environment.

Steps to remove a directory in Linux:

  1. Open a terminal on your Linux system.
  2. Navigate to the directory containing the folder you want to delete (optional).
    $ cd /path/to/parent-directory
  3. Use the rmdir command to remove an empty directory.
    $ rmdir myfolder/
    rmdir: failed to remove 'myfolder/': Directory not empty
    $ rm myfolder/*
    $ rmdir myfolder

    rmdir will only succeed if the directory is empty. If it contains files, the command will fail with an error message.

    More options for rmdir:

    $ rmdir --help
    Usage: rmdir [OPTION]... DIRECTORY...
    Remove the DIRECTORY(ies), if they are empty.
    
          --ignore-fail-on-non-empty
                      ignore each failure that is solely because a directory
                        is non-empty
      -p, --parents   remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is
                        similar to 'rmdir a/b/c a/b a'
      -v, --verbose   output a diagnostic for every directory processed
          --help     display this help and exit
          --version  output version information and exit
    
    GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
    Full documentation <https://www.gnu.org/software/coreutils/rmdir>
    or available locally via: info '(coreutils) rmdir invocation'
  4. If the directory is not empty, use the rm command.
    $ rm myfolder/
    rm: cannot remove 'myfolder/': Is a directory
    $ rm -r myfolder/

    The -r option in rm stands for “recursive” and allows the command to remove the directory and its contents.

    More options for rm:

    $ rm --help
    Usage: rm [OPTION]... [FILE]...
    Remove (unlink) the FILE(s).
    
      -f, --force           ignore nonexistent files and arguments, never prompt
      -i                    prompt before every removal
      -I                    prompt once before removing more than three files, or
                              when removing recursively; less intrusive than -i,
                              while still giving protection against most mistakes
          --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                              always (-i); without WHEN, prompt always
          --one-file-system  when removing a hierarchy recursively, skip any
                              directory that is on a file system different from
                              that of the corresponding command line argument
          --no-preserve-root  do not treat '/' specially
          --preserve-root[=all]  do not remove '/' (default);
                                  with 'all', reject any command line argument
                                  on a separate device from its parent
      -r, -R, --recursive   remove directories and their contents recursively
      -d, --dir             remove empty directories
      -v, --verbose         explain what is being done
          --help     display this help and exit
          --version  output version information and exit
    
    By default, rm does not remove directories.  Use the --recursive (-r or -R)
    option to remove each listed directory, too, along with all of its contents.
    
    To remove a file whose name starts with a '-', for example '-foo',
    use one of these commands:
      rm -- -foo
    
      rm ./-foo
    
    Note that if you use rm to remove a file, it might be possible to recover
    some of its contents, given sufficient expertise and/or time.  For greater
    assurance that the contents are truly unrecoverable, consider using shred.
    
    GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
    Full documentation <https://www.gnu.org/software/coreutils/rm>
    or available locally via: info '(coreutils) rm invocation'
  5. Add the force option with rm if the directory is write-protected.
    $ rm -rf myfolder/

    The -f option forces the removal of write-protected files without prompting for confirmation.

  6. For directories requiring elevated privileges, use sudo with the rm command.
    $ rm -r myfolder/
    rm: descend into write-protected directory 'myfolder/'? y
    rm: cannot remove 'myfolder/myfile.txt': Permission denied
    $ sudo rm -r myfolder/
    [sudo] password for user: 
    $

    You may be prompted to enter your password when using sudo.

Discuss the article:

Comment anonymously. Login not required.