【问题标题】:How to remove files and directories quickly via terminal (bash shell) [closed]如何通过终端(bash shell)快速删除文件和目录[关闭]
【发布时间】:2011-02-08 04:29:18
【问题描述】:

从终端窗口:

当我使用rm 命令时,它只能删除文件。
当我使用rmdir 命令时,它只会删除空文件夹。

如果我有一个嵌套了文件和文件夹的目录,以及包含文件等的文件夹,有没有办法删除所有文件和文件夹而无需输入所有费力的命令?

如果有什么不同,我是从终端使用 Mac Bash shell,而不是 Microsoft DOS 或 Linux。

【问题讨论】:

标签: file terminal directory rm rmdir


【解决方案1】:

我正在寻找一种方法来删除目录中的所有文件,除了一些我想保留的目录和文件。我设计了一种使用 find 的方法:

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

基本上它使用正则表达式来选择要从结果中排除的目录,然后删除剩余的文件。

【讨论】:

    【解决方案2】:
    rm -rf *
    

    将删除当前目录中的所有内容(文件夹和文件)。

    但要小心!只有在您绝对确定您在正确的目录中时才执行此命令。

    【讨论】:

    • rm -rf 是非常危险的命令,您应该始终小心并指定要删除的文件夹。
    • 先运行ls -R *看看rm -rf *会删除什么
    • 这对我来说很好用,谢谢。
    【解决方案3】:

    是的,有。 -r 选项告诉 rmr 递归的,并删除以其参数为根的整个文件层次结构;换句话说,如果给定一个目录,它将删除其所有内容,然后执行有效的rmdir

    您应该知道的另外两个选项是-i-f-i 代表i交互式;它使rm 在删除每个文件之前提示您。 -f 代表 force;它继续并删除所有内容而无需询问。 -i 更安全,但-f 更快;仅当您绝对确定您正在删除正确的内容时才使用它。您可以使用-r 指定这些,也可以不指定;这是一个独立的设置。

    和往常一样,您可以组合开关:rm -r -i 只是 rm -rirm -r -frm -rf

    还要注意,您所学的内容适用于每个 Unix 操作系统上的 bash:OS X、Linux、FreeBSD 等。事实上,rm 的语法在几乎每个 shell 中都是相同的 在每个 Unix 操作系统上。 OS X 在底层实际上是一个 BSD Unix 系统。

    【讨论】:

    • 虽然上面提到的所有选项在列出的所有 Unix 风格中都是标准的,但也有一些差异。例如,OS X(但不是 Linux)有 "rm -d",它可以删除文件或空目录。不过,+1 表示 OS X 内部是 BSD。
    • 是的——POSIX 子集(几乎)保证在 Unixen 中始终如一地工作,但除此之外的任何东西都可能会也可能不会。
    【解决方案4】:
    rm -rf some_dir
    

    -r "递归" -f "force"(禁止确认消息)

    小心!

    【讨论】:

    • +1 很高兴您添加了“小心!”部分......绝对是一个“Sawzall”命令,可以迅速将美好的一天变成糟糕的一天......如果不小心使用。
    • like dont do "# rm -rf /" 你会后悔的:
    • @itsmatt:你知道他们在说什么……给某人一个 Sawzall,突然之间,每个问题看起来都很有趣!
    • 在 Mac 上?改为这样做:brew install trash 然后trash -rf some_dir 这会将不需要的目录移动到您的垃圾箱中,而不是仅仅以 Prestige 样式消失在以太中。 (source)
    • “垃圾”方法很棒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多