代码之家  ›  专栏  ›  技术社区  ›  Ib33X

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

  •  5
  • Ib33X  · 技术社区  · 16 年前

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

    6 回复  |  直到 10 年前
        1
  •  11
  •   Johannes Weiss    16 年前

    在使用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 .. 最后可以省略,但您将在一个不存在的目录中,否则…

    编辑 :正如凯姆卡普兰指出的那样, —— 没有必要,因为 随钻测井 返回始终以开头的完整路径名 / 在UNIX上

        2
  •  3
  •   dwc    16 年前
    olddir=`pwd` && cd .. && rm -rf "$olddir"
    

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

        3
  •  1
  •   kmkaplan    16 年前
    rm -fr "`pwd`"
    
        4
  •  1
  •   Sam Chad    11 年前

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

    FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%
    
        5
  •  0
  •   neoice    16 年前

    操作系统?在基于*nix的资料上,您正在寻找'rm-rf directory/'

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

        6
  •  0
  •   0xTang    10 年前

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