如何简单地从 Linux 上的当前或指定目录中删除所有内容?
几种方法:
rm -fr *
rm -fr dirname/*
不起作用 - 它会留下隐藏文件 - 以点开头的文件,以及当前目录中以破折号开头的文件,并且不适用于太多文件rm -fr -- *
rm -fr -- dirname/*
不起作用 - 它会留下隐藏文件,并且不适用于太多文件rm -fr -- * .*
rm -fr -- dirname/* dirname/.*
不要尝试这个——它也会删除一个父目录,因为“..”也是以“.”开头的。rm -fr * .??*
rm -fr dirname/* dirname/.??*
不起作用——它会留下“.a”、“.b”等文件,并且不能处理太多文件find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -fr
find dirname -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -fr
据我所知正确但不简单。find -delete
find dirname -delete
AFAIK 对当前目录正确,但与指定目录一起使用也会删除该目录。find -mindepth 1 -delete
find dirname -mindeph 1 -delete
AFAIK 正确,但这是最简单的方法吗?
rm -fr * .*
至少 GNU rm 可以正常工作,因为它有特殊代码可以排除“。” 和 ”..”
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/remove.c#n440
FreeBSD rm 手册页显示“尝试删除文件 /、. 或 .. 时出错”,因此如果您指定 force 标志以忽略该错误,它也可能在那里工作。
http://www.freebsd.org/cgi/man.cgi?query=rm&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html
要添加到您的列表中,假设您要删除目录 foo 和所有子目录中的所有内容(这就是您的 find 命令所做的)。我总是发现最简单的是:
如果您不想删除子目录,请修改您的 find 命令以包含
-type f
它会有效地摧毁一切,包括目录本身。
为什么不简单
?
它将为“。”生成错误。& ".." 但它会丢弃其他所有内容。
这是对我有用的东西:
这可能不是最有效的方法,但确实有效。