How to remove files and directories quickly via terminal (bash shell) [closed]
Asked Answered
K

4

431

From a terminal window:

When I use the rm command it can only remove files.
When I use the rmdir command it only removes empty folders.

If I have a directory nested with files and folders within folders with files and so on, is there a way to delete all the files and folders without all the strenuous command typing?

If it makes a difference, I am using the Mac Bash shell from a terminal, not Microsoft DOS or Linux.

Kosak answered 15/4, 2010 at 1:22 Comment(1)
Just in case you wish to restore the files in future , don't use "rm" for such cases . Use "rm-trash" : github.com/nateshmbhat/rm-trashIncised
M
974
rm -rf some_dir

-r "recursive" -f "force" (suppress confirmation messages)

Be careful!

Missie answered 15/4, 2010 at 1:26 Comment(9)
+1 and glad you added the "Be careful!" part... definitely a "Sawzall" command that can quickly turn a good day into a bad one.. if wielded carelessly.Sacral
like dont do "# rm -rf /" you ll regret that:Laxation
@itsmatt: You know what they say...give someone a Sawzall, and suddenly every problem looks like hours of fun!Missie
On a Mac? Do this instead: brew install trash then trash -rf some_dir This will move the unwanted directory into your trashbin instead of just vanishing Prestige-style into the ether. (source)Endogenous
I get "Permission denied"Euphony
If you get "Permission denied" use sudo rm -rf some_dirBrutus
Error: Cowardly refusing to 'sudo brew install' You can use brew with sudo, but only if the brew executable is owned by root. However, this is both not recommended and completely unsupported so do so at your own risk.Cathicathie
To remove many directory with the same name (in this case .wdmc) recursively, go find . -iname ".wdmc" -exec rm -rfv {} +Disentomb
make sure you are not in a modified interactive bash session as it might lead to a different outcomeLara
G
89
rm -rf *

Would remove everything (folders & files) in the current directory.

But be careful! Only execute this command if you are absolutely sure, that you are in the right directory.

Griggs answered 15/4, 2010 at 1:27 Comment(3)
rm -rf is very risky command, you should always be careful and specify folder to be deleted.Kaenel
How about running ls -R * first to see what will be deleted by rm -rf *Arbalest
This works fine for me, thanks.Guanaco
D
19

Yes, there is. The -r option tells rm to be recursive, and remove the entire file hierarchy rooted at its arguments; in other words, if given a directory, it will remove all of its contents and then perform what is effectively an rmdir.

The other two options you should know are -i and -f. -i stands for interactive; it makes rm prompt you before deleting each and every file. -f stands for force; it goes ahead and deletes everything without asking. -i is safer, but -f is faster; only use it if you're absolutely sure you're deleting the right thing. You can specify these with -r or not; it's an independent setting.

And as usual, you can combine switches: rm -r -i is just rm -ri, and rm -r -f is rm -rf.

Also note that what you're learning applies to bash on every Unix OS: OS X, Linux, FreeBSD, etc. In fact, rm's syntax is the same in pretty much every shell on every Unix OS. OS X, under the hood, is really a BSD Unix system.

Different answered 15/4, 2010 at 1:31 Comment(2)
Although all the options mentioned above are standard among all the Unix flavors listed, there are some differences too. For example, OS X (but not Linux) has "rm -d", which removes either files or empty directories. Still, +1 for the point that OS X is BSD internally.Metralgia
True---the POSIX subset is (pretty much) guaranteed to work consistently across Unixen, but anything outside that may or may not.Different
T
4

I was looking for a way to remove all files in a directory except for some directories, and files, I wanted to keep around. I devised a way to do it using find:

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Essentially it uses regex to select the directories to exclude from the results then removes the remaining files.

Trina answered 25/4, 2014 at 18:33 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.