正在删除名为 ~ 的文件夹

the*_*cer 32 bash rm

这是输出 ls -l

ls -l
total 53484
drwxr-xr-x 3 root root     4096 2011-02-10 05:59 ~
-rw-r--r-- 1 root root 54313810 2011-02-13 05:09 jobs.jar
-rw-r--r-- 1 root root   384035 2011-02-15 05:33 jobsLog.out
Run Code Online (Sandbox Code Playgroud)

我不能这样做,rm -rf ~ 因为这会删除我的主目录。

我该怎么办?这对我来说不是问题,只是眼痛。

War*_*ert 60

rm -R ./~

这将使它~在当前文件夹中查找。

  • 这个答案是正确的,但我认为 Oli 的答案更好,因为它更安全。如果您稍微错误地输入此命令,您将永久破坏您的系统。 (2认同)

Oli*_*Oli 44

我以前犯过一些愚蠢的错误,rm所以这里有一些我多年来学到的技巧,可以尝试保护您的数据免受意外伤害:

  1. 使用像 Nautilus 这样的图形解决方案。将其软删除到垃圾箱。然后,当你知道你没有把你$HOME的垃圾移到垃圾箱(一切都会开始崩溃并看起来很时髦)时,清空你的垃圾箱。

  2. 移动而不是删除。重命名目录mv,例如:

    mv ./\~ ./a-nice-sensible-directory-name
    
    Run Code Online (Sandbox Code Playgroud)

    然后删除它。

  3. 如果有疑问,请-i在处理潜在的 fubar 时使用该标志。它会提示您删除每个文件,并且应该让您很快知道是否会发生不好的事情。

    oli@bert:~/Desktop$ rm -rfi ./del/
    rm: descend into directory `./del'? y
    rm: remove regular file `./del/output2.pdf'?
    
    Run Code Online (Sandbox Code Playgroud)

  • 你可以将 `ssh://user@ip/folder` 塞进 nautilus。并不适用于所有情况(例如,如果您需要 sudo),但是您去了。别名“-i”是一把双刃剑。这很有帮助,但当您处理大量文件时,它也会非常烦人。也考虑`-I`。并查看`man rm`以获取更多提示。 (7认同)

Ste*_*zzo 19

绝妙的问题:)

您可以通过以下方式删除目录 逃跑 波浪号:

rm -rf \~
Run Code Online (Sandbox Code Playgroud)

这适用于各种特殊字符。


Yur*_*ziy 17

您可以简单地将文件夹名称变成撇号:

 rm '~'
Run Code Online (Sandbox Code Playgroud)


小智 6

另一种稍微复杂一点的方法是使用 inode 编号:

$ ls -li
total 24
 7146369 drwxr-xr-x   4 user  staff   136 Jan 19 21:50 ~
$ find . -xdev -inum 7146369 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

优点

  • 它适用于您可以拥有的任何花哨名称。
  • 应该是安全的,因为 inode 编号是唯一的(-xdev:不要在其他文件系统上降低目录),您可以先测试搜索,以防万一,删除-exec rm -rf {} \;.

缺点

  • 这样做find .在很多文件和/或目录的目录会占用大量的时间和磁盘读取。