如何简单地从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 * .*
因为它有特殊的代码来排除“”,所以至less能用于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手册页说:“试图删除files /,。或..”是错误的,所以如果你指定force标志来忽略错误,那么它也可能在那里工作。
要添加到你的列表中,可以说你想删除目录foo和所有子目录中的所有东西(这是你的find命令的作用)。 我总觉得最简单的是:
#for dir foo with /home/kbrandt/foo rm -rf /home/kbrandt/foo && mkdir /home/kbrandt/foo
如果你不想删除子目录,修改你的find命令来包含-type f
rm -rf directory
它会有效地杀死所有的东西,包括目录本身。
为什么不简单
ls -la <selected dir>| xargs rm -Rf
?
它会产生“。”的错误。 &“..”但它会放下一切。
这是一些对我来说很有用的东西:
zip -rm foo * rm foo.zip
它可能不是最有效的方法,但它的工作。