Linux下删除文件的命令是rm,使用起来非常简单
像这样就删除了test.txt这个文件。说起来简单,实际在删除文件夹(文件)的操作中常常会遇到很多小问题,下面我逐一给出解决方案:
问题1:删除文件夹时失败,错误提示:
上面先新建了一个文件夹test,再尝试删除它,结果遇到报错。 解决:rm命令的作用是删除文件,真正删除文件夹的其实应该是rmdir命令。但是我们习以为常的用rm来删除,就会看到这个报错了。解决办法是给rm加上-r参数:
问题2:删除文件不断让确认,提示:
4个文件还可以逐个按y确认删除,如果数量再多就没有办法做到了。 解决:出现这种情况的原因是CentOS等Linux发行版基于安全方面的考虑,对rm做了一个alias别名处理,执行这个命令可以看到:
-i的意思是删除每个文件前确认(prompt before every removal) 问题找到了,如何解决呢?有两个办法: 办法1:加上-f参数,-f的意思是不用确认强行删除(ignore nonexistent files, never prompt)
办法2:绕过在命令前加反斜线的方式绕过系统alias
问题3:删除文件失败,提示权限不够
这种情况就比较麻烦,不是一句话两句话能搞清楚的了。删除一个文件,实际上是在它所在的文件夹里执行命令,所以当前登录用户要有这个文件夹的执行权限。 解决:这种情况通常用sudo临时获得root权限(当然了前提是有权sudo)。如果既没有sudo权限,又有删除文件的需求,那说明这台服务器的权限分配不合理,只能找系统管理员解决。
问题4:删除超大文件夹没有响应(慢) 有一个文件夹超大上百GB,里面的文件都是海量小文件(<10KB),通常如果用文件做缓存就会出现这种情况。如果因为某些原因要删除这个文件夹,那可麻烦了,因为删除超大文件非常慢:执行一个rm操作需要几十分钟是常有的事。 而执行的过程中如果终端窗口关掉,那这个命令就执行失败了,在网络不好的时候重试多少次都无法完成。 解决:nohup命令可以让服务器在后台执行命令,不必开着终端窗口,以删除文件夹为例:
这里的28898是进程ID,记下这个数字,通过下面的命令了解进程状态:
如果对应的进程已经没有了,就说明已经执行完了(或者出错了)。程序的回显会写入到nohup.out文件中,对rm命令来说通常没有回显。
问题5:删除超大文件夹报错
这种情况比问题4还严重一些,问题4是慢但最终也能删除完,而出现这个报错就说明删除执行不下去了。 解决:把删除一个文件夹的操作拆分成逐一删除N多个小文件,具体的命令是:
还可以用find命令的-exec参数,原理大同小异。
问题6:如何最快速度简单粗暴的删除一个超大文件夹 上面的方法提供了更高的灵活度,如果只删除特定文件则稍加修改就可以实现。但如果目的明确就是要彻底删除一个文件夹的所有内容,而且服务器上有rsync命令,还有更快的方式:
如果rsync命令已经安装,而我们要清空的是/home/test/big/这个目录,用这个命令是最快的:
这个命令的原理和上面的所有命令都不一样,它直接用另一个空文件夹来替换掉目标文件夹,速度最快,如果服务器装有rsync命令的话,这是删除大文件夹的最佳选择。 (责任编辑:IT) |