7

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

4

6 回答 6

15

在使用 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在我们不在真实目录中而是在指向它的符号链接中的情况下。
  • "s 在目录包含空格的情况下围绕参数

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

  • 最后cd ..的 the 可以省略,但否则你将在一个不存在的目录中......

编辑:正如 kmkaplan 所指出的,这--不是必需的,因为它返回在 UNIX 上pwd始终以开头的完整路径名/

于 2009-02-15T14:21:18.700 回答
4
olddir=`pwd` && cd .. && rm -rf "$olddir"

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

于 2009-02-15T14:14:14.693 回答
2
rm -fr "`pwd`"
于 2009-02-15T14:16:04.843 回答
1

我认为这在 DOS / Windows CMD 下是可能的,但我找不到在命令之间传递数据的方法。其他人可能知道解决方法?

FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%
于 2009-02-15T15:14:02.303 回答
0

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

注意:“递归”的“-r”标志可能很危险!

于 2009-02-15T14:13:16.410 回答
0

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

于 2014-10-19T03:15:14.517 回答