如何删除当前目录中的所有文件,包括当前目录?

时间:2009-02-15 14:08:47

标签: bash file-io command-line delete-directory

如何从当前目录中删除所有文件和子目录,包括当前目录?

6 个答案:

答案 0 :(得分:12)

在使用GNU工具的bash下,我会这样做(在大多数情况下应该是安全的):

rm -rf -- "$(pwd -P)" && cd ..

不是在bash下,没有GNU工具,我会使用:

TMP=`pwd -P` && cd "`dirname $TMP`" && rm -rf "./`basename $TMP`" && unset TMP

为什么这更安全:

  • --结束参数列表,如果我们的目录以短划线开头(非bash:文件名前为./
  • pwd -P不仅仅是pwd我们不在真实目录中,而是在指向它的符号链接中。
  • "围绕参数,如果目录包含空格

一些随机信息(bash版本):

  • 最后的cd ..可以省略,但你会在一个不存在的目录中,否则...... {/ li>

编辑:正如kmkaplan所指出的那样,--没有必要,因为pwd会返回在UNIX上始终以/开头的完整路径名< / p>

答案 1 :(得分:4)

olddir=`pwd` && cd .. && rm -rf "$olddir"

需要cd ..,否则它将失败,因为您无法删除当前目录。

答案 2 :(得分:1)

rm -fr "`pwd`"

答案 3 :(得分:1)

我认为这在DOS / Windows CMD下是可行的,但我找不到在命令之间管道数据的方法。其他人可能知道这个问题吗?

FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%

答案 4 :(得分:0)

操作系统?在基于* NIX的东西上,你正在寻找'rm -rf目录/'

注意:'recursive'的'-r'标志可能很危险!

答案 5 :(得分:0)

您可以返回目标文件夹的父文件夹,然后使用'rm -rf yourFolder'。 或者您可以使用'rm -rf *'从当前文件夹中删除所有文件和子文件夹。