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
myfile2then I'd like to be left with just
myfile1
myfile2I assume that I need to use rm -r -i
Am I correct?
5 Answers
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...
1Use
rm -rf ./*/That avoids interactive mode an deletes only directories in your local directory.
1Something like this should work:
find /path -type d -exec rm -rf '{}' \;
-type d looks for only directories
you can also try in this way to delete only all folders not files from any location in linux. #delete only all dir and don't touch files #!/bin/bash for dir in `ls -l | grep ^d | awk '{print $9}'` do echo "going to delete $dir " `rm -rf $dir` done ls