106

I am a new user and I am trying to remove a specific folder. I am using sudo rm /path/, but it is not working. What is the correct command to use?

It is a file catolog I am attempting to remove but I am geting a message that it is empty.

Carl
  • 1,061

6 Answers6

123

Be sure the folder is really empty (hidden files/folders might be in there). Look at the file contents again with

sudo ls -lha /path/

If you're absolutely certain that it doesn't contain anything you want to have (including subdirectories), delete it with

sudo rm -r -f /path/
  • -r is for recursive, so it will delete the folder and subfolders, even if it is non-empty
  • -f is for force (this might be unnecessary).
wjandrea
  • 14,236
  • 4
  • 48
  • 98
phoibos
  • 21,456
  • 2
    @EliranMalka The -f flag is not necessary forrm to delete items directly contained in the specified folder, which I presume is what you mean by "address the folder contents." Instead -f stands for force, causing rm never to prompt for confirmation even if the file to be deleted has no write permission (rm: remove write-protected regular file ‘foo’?), and also causing rm not to warn on an attempt to delete a file that already does not exist. It's best only to use the -f flag when it's really needed. rm -r without -f absolutely does "address the folder contents." – Eliah Kagan Apr 16 '15 at 04:35
  • wat? i honestly don't know what i was saying... forget it :) – Eliran Malka Apr 16 '15 at 18:12
  • 1
    i had to remove the leading / to get it to work for me. ie: sudo rm -r -f path/ – Elon Zito Mar 02 '16 at 20:19
27

One thing to note is that the folder should be empty, then run the following command

rmdir directory_name

Another thing to note is that the command your are typing should not start with a slash(/) not unless the folder is under root.

The last option and you should be very careful while using this one, is to force removal of the directory in question including any other files/directories in it.

rm -rf directory_name

Cheers.

tmwanik
  • 365
  • 2
  • 7
12

For a beginner I would not recommend getting into the habit of using rm -Rf or rm -r -f, this will bite you in the face sooner or later. Safer would be to create a systemwide alias. Open terminal: Ctrl+Alt+T, then type:

alias rm='rm -i'

So you get prompted before wiping out all your vacation photo's by accident. The second recommendation I would like to add is to use rmdir , it will complain about non-empty directories and that is exactly what you want as a newbee.

But in the sense of the question, the answer is as given here already, use -f to erase a folder.

andrew.46
  • 38,003
  • 27
  • 156
  • 232
5

If you are sure that the directory exists, then:

(sudo) rm -rfv /path/

To delete the entire directory to your folders and files

muru
  • 197,895
  • 55
  • 485
  • 740
2

If you want to delete all the files in directory and just want to keep the directory or some files use (with the -i flag you can keep the file or delete it).

rm -i *

-i is for interactive and will prompt you each and every time there is a file to delete.

If you need to delete sub directories along parent directory, use:

rm -rf NameOfDirectory
Eliah Kagan
  • 117,780
OmiPenguin
  • 2,322
0

If you would like to delete the contents and overwite the data on your drive try using shread. It only removes files so to remove everything in the directory use;

sudo find <directory_name> -depth -type f -exec shred -vz -n 5 --remove=wipe {} +

then remove the empty directory

rm -rf <directory_name>
chaggy
  • 131