I am getting an error message that read as follows:
rmdir: failed to remove 'trip-pictures': Directory not empty
How can I remove non empty directory in Linux using the cli?
There are two commands that one can use to delete non empty directories in Linux operating system:
- rmdir command – Delete directory only if it is empty.
- rm command – Remove directory and all files even if it is NOT empty by passing the -r to the rm to remove a directory that is not empty. In other words, remove non empty folder.
The following commands works with CentOS, RHEL, Fedora, Alpine, Arch, Debian, Ubuntu and all other Linux distros. Let us see some examples.
Procedure to remove non empty directory in Linux
We use the rm command to delete a directory that is not empty. The syntax is:
rm -rf dir-name
rm -rf /path/to/dir/name
Be careful when you use the rm command with -r and -f options. The -r option remove directories and their contents recursively including all files. The -f option to rm command ignore nonexistent files and arguments, never prompt for anything. There is no undo option. So you have to be very careful with rm -rf command. Let us see some examples.
Examples for removing non empty directory under Linux
Trying to remove trip-pictures directory with the rmdir command in Linx:
rmdir: failed to remove 'trip-picture/': Directory not empty
To see files inside the directory use ls command
ls -l trip-pictures
To delete all files inside trip-pictures including folder itself run the following rm command:
rm -rf trip-pictures
How to get visual confirmation about deleting directory
Pass the -v to the rm command:
rm -vrf dir1
rm -vrf dir1 dir2
removed 'dir1/resume.txt' removed 'dir1/bar.txt' removed 'dir1/foo.txt' removed directory 'dir1' removed directory 'dir2/pictures' removed directory 'dir2'
How to get confirmation prompt before every removal of a dir
You need to pass the -i option to the rm command:
rm -ir foo
rm: descend into directory 'foo/'? y rm: remove regular empty file 'foo/bash.tar.gz'? y rm: remove regular empty file 'foo/db.sql'? y rm: remove directory 'foo/'? y
To get prompt once before removing more than three files, or when removing recursively; less intrusive than -i, while still giving protection against most mistakes pass the -I option:
rm -Ir bar
rm: remove 1 argument recursively? y
Want to get info on all rm and rmdir switches? Try the help command as follows:
You learned how to remove non empty directory under Linux or Unix-like operating systems using command line options. For more information see rm command and rmdir command command man pages by typing the following man command command: