How to simply remove everything from a directory on Linux
- by Tometzky
How to simply remove everything from a current or specified directory on Linux?
Several approaches:
rm -fr *
rm -fr dirname/*
Does not work — it will leave hidden files — the one's that start with a dot, and files starting with a dash in current dir, and will not work with too many files
rm -fr -- *
rm -fr -- dirname/*
Does not work — it will leave hidden files and will not work with too many files
rm -fr -- * .*
rm -fr -- dirname/* dirname/.*
Don't try this — it will also remove a parent directory, because ".." also starts with a "."
rm -fr * .??*
rm -fr dirname/* dirname/.??*
Does not work — it will leave files like ".a", ".b" etc., and will not work with too many files
find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -fr
find dirname -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -fr
As far as I know correct but not simple.
find -delete
find dirname -delete
AFAIK correct for current directory, but used with specified directory will delete that directory also.
find -mindepth 1 -delete
find dirname -mindeph 1 -delete
AFAIK correct, but is it the simplest way?