1. 程式人生 > >Linux - rm -rf 刪除檔案指定移動檔案位置 (李作強)

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) 輸出:
[email protected]:/tmp$ myrm(){ D=/tmp/ ( d a t e + (date +%Y%m%d%H%M%S); mkdir - D; mv “[email protected]” $D && echo "moved to KaTeX parse error: Expected 'EOF', got '}' at position 8: D ok"; }̲ [email protected] alias rm=‘myrm’
[email protected]:/tmp$ touch {1…4}.log
[email protected]:/tmp$ ls 1.log 2.log 3.log 4.log
[email protected]:/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 [email protected]:/tmp ls 20181026111028
[email protected]:/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)輸出:
[email protected]:/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
[email protected]:/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’