Linux 递归删除保留第一个目录

Linux 递归删除保留第一个目录

第一个问题,我通常在 StackOverflow 上。

我需要删除目录中的所有内容,但不能删除目录本身,因为我没有权限删除该目录。这看起来很简单,但我找不到执行此操作的命令。提前致谢。

答案1

rm -r /path/to/directory/*

或者

rm -rv /path/to/directory/*

如果你想看看发生了什么。

答案2

混乱 - 您担心 rm 会删除...,这是错误的。

我快速搜索了一下,在以下位置找到了第 7 版 unix 手册中的 rm 手册页:http://plan9.bell-labs.com/7thEdMan/vol1/man1.bun其中写道:

诊断

   Generally  self-explanatory.   It  is forbidden to remove the file ..
   merely to avoid the  antisocial  consequences  of  inadvertently  doing
   something like rm -r .

鉴于第 7 版 unix 是所有现代 unix 的祖先,并于 1979 年发布,我认为这样做绝对安全。它不会做任何事情,但也不会造成任何伤害。

现在,还有其他程序,例如 chown,如果您做一些古怪的事情(例如“chown -Rh user .*”),它会很乐意“下降”到 .. 并引起各种混乱,但 rm 不是 chown。

答案3

如果当前目录可以使用,则使用简易版本:

find . ! \( -name . \) -print0 | xargs -0 rm -rf

如果当前目录不好,则更难的版本:

find /some/dir ! \( -samefile /some/dir \) -print0 | xargs -0 rm -rf

答案4

为什么不只是:

rm -rf directory

您将收到一条错误消息,因为您没有权限删除该目录。但它也会删除目录中的所有内容,包括那些麻烦的隐藏文件。

相关内容