问题描述
这是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
我不能做rm -rf ~
,因为这将删除我的主目录。
我该怎么办?对我来说这不是问题,只是一个eye-sore。
最佳解决办法
rm -R ./~
这将使它在当前文件夹中查找~
。
次佳解决办法
我之前使用过rm
犯了一些愚蠢的错误,这里有一些我多年来学到的一些提示,试图让你的数据免于意外事故:
-
使用像Nautilus这样的图形解决方案。 Soft-delete它到垃圾桶。然后当你知道你没有将你的
$HOME
移动到垃圾箱里时(一切都会开始崩溃并看起来很时髦),清空垃圾桶。 -
移动而不是删除。使用
mv
重命名目录,例如:mv ./\~ ./a-nice-sensible-directory-name
然后删除它。
-
如有疑问,请在处理潜在的fubars时使用
-i
标志。它会提示您删除每个文件,并且应该让您很快知道是否会发生错误。oli@bert:~/Desktop$ rm -rfi ./del/ rm: descend into directory `./del'? y rm: remove regular file `./del/output2.pdf'?
第三种解决办法
精彩问题:)
您可以通过转义波形符来删除目录:
rm -rf \~
这适用于各种特殊字符。
第四种办法
您可以将文件夹名称简化为撇号:
rm '~'
第五种办法
另一种,更复杂的方法是使用inode数字:
$ ls -li
total 24
7146369 drwxr-xr-x 4 user staff 136 Jan 19 21:50 ~
$ find . -xdev -inum 7146369 -exec rm -rf {} \;
优点
-
它适用于您可以拥有的wathever花式名称。
-
应该是安全的,因为inode号是唯一的(
-xdev
:不要下载其他文件系统上的目录),你可以先测试搜索,以防万一,删除-exec rm -rf {} \;
。
缺点
-
在具有大量文件和/或目录的目录中执行
find .
将花费大量时间和磁盘读取。