bash - remove all directories (and contents) but not files in pwd

I'd like to remove all directories from the pwd but leave the files in the pwd alone. If the content of my pwd is:

mydir1
mydir2
myfile1
myfile2

then I'd like to be left with just

myfile1
myfile2

I assume that I need to use rm -r -i

Am I correct?


No that would give you "missing operand" since you didn't specify anything. Putting a * would prompt also for files.

I'd give a try to:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

The mindepth 1 will exclude . from the results, the maxdepth 1 will exclude trying to do under the directories that will anyway get deleted (therefore creating a warning). But in practice you could leave them both out if you agree to have a few "innocent" warnings.


I found this one somewhere:

rm -r */

Seems the easiest way to go. With your example, you would have to confirm each case, if you have 5 files it's OK, but with bigger file structures an interactive mode is't the way to go... Just as a suggestion, if it's important information, make a backup...


Use

rm -rf ./*/

That avoids interactive mode an deletes only directories in your local directory.


Something like this should work:

find /path -type d -exec rm -rf '{}' \;

-type d looks for only directories