Linux - rm -rf 删除文件指定移动文件位置 (李作强)

rm -rf 删除文件指定移动文件位置。
建立回收站机制,它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。可以写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站。
1)在/data/work/ 目录下新建一个目录,命名为:.trash
mkdir -p /data/work/.trash

2)在/data/work/目录下,新建一个shell文件,命名为: remove.shvi /data/work/remove.sh
#!/bin/bash
TRASH_DIR="/data/work/.trash"
for i in $*; do
STAMP=date +%s
fileName=basename $i
mv $i T R A S H D I R / TRASH_DIR/ fileName.$STAMPdone

3)修改vi ~/.bashrc 增加一行
alias rm=“sh /data/work/remove.sh”
用我们自建的remove.sh替代rm命令

4)设置crontab,定期清空垃圾箱,如:
0 0 * * * rm -rf /data/work/.trash/* 每天0点清空垃圾箱。

5)source ~/.bashrc 使替换立即生效
注意脚本中rm -rf 变量的使用在脚本尽量不要使用
rm -rf $FOO/, 请使用 rm -rf $FOO;另外删除尽量不要写相对路径,不要带变量。
此时若想删除回收站里的文件, 由于是临时的,所以换一个命令行窗口后,绑定就会失效 即换一个命令行窗口执行rm -r 命令删除即可,如果不想换命令行窗口,可以用“sudo rm -rf 目录名” 删除回收站的文件,或者解除临时绑定“unalias rm” 。

rm -rf 自定义回收站功能

1)一条命令即可解决所有的困扰:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p D ; m v " D; mv " @" $D && echo “moved to $D ok”;
}

2)说明:
myrm() { D=/tmp/$(date +%Y%m%d%H%M%S);
#在/tmp文件夹中创建名为“当前日期”的文件;
#其中“date+%Y%m%d%H%M%S”是规定了日期的输出格式;
mkdir -p KaTeX parse error: Expected 'EOF', got '#' at position 6: D; #̲以变量D中的路径创建文件夹。 …@" $D && echo “moved to $D ok”;
#将所要删除的文件移入变量D中的文件夹内,移入成功后,输出移动成功。
} alias rm=‘myrm’
#命令别名定义方式,此定义成功后,无论输入rm或myrm系统都会做出相同操作。

3) 输出:
hc@hc-virtual-machine:/tmp$ myrm(){ D=/tmp/ ( d a t e + (date +%Y%m%d%H%M%S); mkdir - D; mv “$@” $D && echo "moved to KaTeX parse error: Expected 'EOF', got '}' at position 8: D ok"; }̲ hc@hc-virtual… alias rm=‘myrm’
hc@hc-virtual-machine:/tmp$ touch {1…4}.log
hc@hc-virtual-machine:/tmp$ ls 1.log 2.log 3.log 4.log
hc@hc-virtual-machine:/tmp r m [ 1234 ] . l o g m o v e d t o / t m p / 20181026111028 o k h c @ h c v i r t u a l m a c h i n e : / t m p rm [1234].logmovedto/tmp/20181026111028 ok hc@hc-virtual-machine:/tmp ls 20181026111028
hc@hc-virtual-machine:/tmp/20181026111028$ ls 1.log 2.log 3.log 4.log

4)说明:上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。
由于我们当前已将rm绑定为myrm,所以我们无法执行删除操作临时设置rm命令别名为myrmalias rm='myrm’此时若想删除回收站里的文件, 由于是临时的,所以换一个命令行窗口后,绑定就会失效 即换一个命令行窗口执行rm -r 命令删除即可如果不想换命令行窗口,可以用sudo rm -rf 目录名 删除回收站的文件或者解除临时绑定unalias rm

5)输出:
hc@hc-virtual-machine:/tmp/20181026111444$ alias
alias alert=‘notify-send --urgency=low -i "$([ KaTeX parse error: Expected 'EOF', got '&' at position 9: ? = 0 ] &̲& echo terminal…(history|tail -n1|sed -e ‘’‘s/^\s*[0-9]+\s*//;s/[;&|]\salertKaTeX parse error: Can't use function '\'' in math mode at position 4: //'\̲'̲')"' alias egr… unalias rm
hc@hc-virtual-machine:/tmp/20181026111444$ alias
alias alert='notify-send --urgency=low -i "$([ KaTeX parse error: Expected 'EOF', got '&' at position 9: ? = 0 ] &̲& echo terminal…(history|tail -n1|sed -e ‘’'s/^\s
[0-9]+\s*//;s/[;&|]\s*alert$//’’’)"’
alias egrep=‘egrep --color=auto’
alias fgrep=‘fgrep --color=auto’
alias grep=‘grep --color=auto’
alias l=‘ls -CF’
alias la=‘ls -A’
alias ll=‘ls -alF’ a
lias ls=‘ls --color=auto’

猜你喜欢

转载自blog.csdn.net/weixin_41949714/article/details/84787150
今日推荐