如何从Linux上的目录中删除所有内容

前端之家收集整理的这篇文章主要介绍了如何从Linux上的目录中删除所有内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从 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
据我所知,正确但不简单.
>找-delete
找到dirname -delete
AFAIK更正当前目录,但与指定目录一起使用也将删除该目录.
> find -mindepth 1 -delete
找到dirname -mindeph 1 -delete
AFAIK正确,但这是最简单的方法吗?

解决方法

rm -fr *.*
至少GNU rm可以正常工作,因为它有特殊的代码来排除“.”和“……”
$id
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
$cd /tmp
$mkdir rmtest
$cd rmtest
$touch .test
$ls -la
total 8
drwxr-xr-x 2 nobody nogroup 4096 2009-08-19 15:37 .
drwxrwxrwt 7 root   root    4096 2009-08-19 15:37 ..
-rw-r--r-- 1 nobody nogroup    0 2009-08-19 15:37 .test
$rm -rf .*
rm: cannot remove `.' or `..'
rm: cannot remove `.' or `..'
$ls -la
total 8
drwxr-xr-x 2 nobody nogroup 4096 2009-08-19 15:37 .
drwxrwxrwt 7 root   root    4096 2009-08-19 15:37 ..
$

http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/remove.c#n440

FreeBSD rm手册页说“尝试删除文件/,.或..是一个错误”,所以如果指定强制标志来忽略错误,它也可能在那里工作.

http://www.freebsd.org/cgi/man.cgi?query=rm&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html

猜你在找的Linux相关文章