安全的rm 让你在linux删除的文件有地方找回

jerry linux 2015年11月23日 收藏

一个不小心rm掉文件了吧?后悔莫及了吧!

把这段代码加入你的home目录的.bashrc或者.zshrc就可以了,

工作原理:在你的home目录会创建一个.trash文件夹,里面会按照删除时间 年-月-日/小时/ 进行归档已删除的文件,然后会删除一个月以前的文件夹。

  1. function rm() {
  2. # garbage collect
  3. now=$(date +%s)
  4. for s in $(ls --indicator-style=none $HOME/.trash/) ;do
  5. dir_name=${s//_/-}
  6. dir_time=$(date +%s -d $dir_name)
  7. # if big than one month then delete
  8. if [[ 0 -eq dir_time || $(($now - $dir_time)) -gt 2592000 ]] ;then
  9. echo "Trash " $dir_name " has Gone "
  10. /bin/rm $s -rf
  11. fi
  12. done
  13. # add new folder
  14. prefix=$(date +%Y_%m_%d)
  15. hour=$(date +%H)
  16. mkdir -p $HOME/.trash/$prefix/$hour
  17. if [[ -z $1 ]] ;then
  18. echo 'Missing Args'
  19. return
  20. fi
  21. echo "Trashing "$1
  22. mv $1 $HOME/.trash/$prefix/$hour
  23. }