linux删除让linux的rm删除文件到“回收站”

Posted liangchaoxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux删除让linux的rm删除文件到“回收站”相关的知识,希望对你有一定的参考价值。

目录

​即可即用​

​说明​



即可即用

将~/.local/share/Trash/files 作为回收站地址

vim  /usr/local/bin/rm.sh

#!/bin/bash RECYCLE=~/.local/share/Trash/files

test ! -d ${RECYCLE} && mkdir -p ${RECYCLE} #if not trash folder,create one  

_datedir=`date +"%Y%m%d"`  

_dstdir=${RECYCLE}/${_datedir}  

test ! -d ${_dstdir} && mkdir -p ${_dstdir} #if not trash folder,create one  

for _parms in $*  

do  

if [ -d ${_parms} ] || [ -f ${_parms} ];then  

test -d ${_parms} && echo "${_parms} is directory" && mv ${_parms} ${_dstdir}/  

test -f ${_parms} && echo "${_parms} is file" && mv ${_parms} ${_dstdir}/  

else   echo "${_parms} is not directory or file"  

fi  

done

再在~/.bashrc文件中增加如下别名配置:

alias rm=\'/usr/local/bin/rm.sh\'

alias surm=\'/bin/rm -i\'

最后重新载入.bashrc中的配置,实现rm 删除文件到回收站,surm彻底删除文件。

 

说明

linux系统中误删文件恢复很麻烦,有的甚至无法恢复,所以简单实现rm脚本,实现删除文件到“回收站”。实现可以恢复到最后一次删除的文件,电脑重启后linux系统将自动删除“回收站”中的文件目录。

实现如下

中兴新支点的回收站地址是:~/.local/share/Trash/files,注意 RECYCLE=~/.local/share/Trash/files 不能写成RECYCLE=’~/.local/share/Trash/files‘

/usr/local/bin/rm.sh

#!/bin/bash RECYCLE=~/.local/share/Trash/files 
test ! -d ${RECYCLE} && mkdir -p ${RECYCLE} #if not trash folder,create one

_datedir=`date +"%Y%m%d"`
_dstdir=${RECYCLE}/${_datedir}
test ! -d ${_dstdir} && mkdir -p ${_dstdir} #if not trash folder,create one

for _parms in $* do
if [ -d ${_parms} ] || [ -f ${_parms} ];then

test -d ${_parms} && echo "${_parms} is directory" && mv ${_parms} ${_dstdir}/

test -f ${_parms} && echo "${_parms} is file" && mv ${_parms} ${_dstdir}/

else
echo "${_parms} is not directory or file"

fi

done

 

 

再在~/.bashrc文件中增加如下别名配置:

alias rm=\'/usr/local/bin/rm.sh\'

alias surm=\'/bin/rm -i\'

最后重新载入.bashrc中的配置,实现rm 删除文件到回收站,surm彻底删除文件。

 

命令说明:

test ! -d  $_recyc && mkdir -p $_recyc 

test express&&command

如果 express为真则执行command

 

shell编程中for file in $*; do是什么意思

$*是此行命令所在函数(脚本)的所有被传入参数的合集

与$@类似,不用引号的情况下没有区别

区别是当被""扩起来以后

"$*"被当做一个字符串

"$@"被当做n个字符串(n=参数个数)


for 是循环语句

意思就是,当file取每一个参数的值时,执行do后面的循环体

完整语句是

for file in $*;do

   #some_command

   echo $file

done

上面这就是循环打印每个参数. 

 

除了上面的方法,还可以安装:

trash-cli https://blog.csdn.net/resouer/article/details/20714277

 

注意:

 虽然rm用别名定义了,但是可以是用绝对路径的命令 删除文件 比如/bin/rm 1.txt 仍然是调用真实的rm删除,它是不会保存到.trash目录的。

 

7天自动删除

如果需要定义自动清理7天删除的文件

可以写一个脚本

#!/bin/bash

find /root/.trash/ -ctime 7 -type file -name "*" -exec /bin/rm {} \\;

将脚本放入开机运行中

最近访问时间 access time (-atime)

最近更改时间 modify time (-mtime) 

最近状态改动时间 change time(-ctime)

 

举例说明:

  -mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件

  -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名

  -mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名

 

  例如:将系统24小时内更改过内容的档案列出 。

  find / -mtime 0

 

找 “5天之内被更改过的档案名” 就是             find / -mtime -5

找“5天前的那一天被更改过的档案名” 就是   find / -mtime 5 

找“5天之前被更改过的档案名” 就是   find / -mtime +5

下面用图来说明一下:

\'【linux删除】让linux的rm删除文件到“回收站”_删除文件\'

 

 

 

以上是关于linux删除让linux的rm删除文件到“回收站”的主要内容,如果未能解决你的问题,请参考以下文章

linux下rm命令修改,增加回收站功能笔记

如何在 Linux 中恢复已删除的文件-

linux中使用rm命令将文件移到回收站的方法

ubuntu/linux trash-cli 删除文件到回收站 类似回收站机制的删除

将linux下的rm命令改造成移动文件至回收站

打造Linux回收站