Linux下使用Trash删除文件到回收站

trash-cli 用于移动文件到回收站,同时会记录文件的原地址、删除日期和权限。trash-cli 和 KDE、GNOME、XFCE 使用同一个回收站,你可以在命令行或脚本运行 trash-cli。

安装

archlinux
1
sudo pacman -S trash-cli

命令

命令 作用
trash-put 把文件或目录移动到回收站
trash-empty 清空回收站
trash-list 列出回收站文件
trash-restore 恢复回收站文件
trash-rm 删除回收站文件

用法

  • 移动文件到回收站:

    1
    $ trash-put

  • 列出回收站文件:

    1
    2
    3
    4
    $ trash-list
    2008-06-01 10:30:48 /home/andrea/bar
    2008-06-02 21:50:41 /home/andrea/bar
    2008-06-23 21:50:49 /home/andrea/foo

  • 搜索回收站文件:

    1
    2
    3
    $ trash-list | grep foo
    2007-08-30 12:36:00 /home/andrea/foo
    2007-08-30 12:39:41 /home/andrea/foo

  • 恢复回收站文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ trash-restore
    0 2007-08-30 12:36:00 /home/andrea/foo
    1 2007-08-30 12:39:41 /home/andrea/bar
    2 2007-08-30 12:39:41 /home/andrea/bar2
    3 2007-08-30 12:39:41 /home/andrea/foo2
    4 2007-08-30 12:39:41 /home/andrea/foo
    What file to restore [0..4]: 4
    $ ls foo
    foo

  • 删除所有回收站文件:

    1
    $ trash-empty

  • 删除回收站中 n 天前被回收的文件:

    1
    $ trash-empty <days>

  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ date
    Tue Feb 19 20:26:52 CET 2008
    $ trash-list
    2008-02-19 20:11:34 /home/einar/today
    2008-02-18 20:11:34 /home/einar/yesterday
    2008-02-10 20:11:34 /home/einar/last_week
    $ trash-empty 7
    $ trash-list
    2008-02-19 20:11:34 /home/einar/today
    2008-02-18 20:11:34 /home/einar/yesterday
    $ trash-empty 1
    $ trash-list
    2008-02-19 20:11:34 /home/einar/today

  • 只删除符合某种模式的文件:

    1
    $ trash-rm \*.o

    注意:要用双引号圈住模式来避免 shell 拓展。

常见问题

  • 如何创建顶级 .Trash 目录?

    1
    2
    3
    sudo mkdir --parent /.Trash
    sudo chmod a+rw /.Trash
    sudo chmod +t /.Trash

  • 我能把 rm 的别名设置为 trash-put 吗?

    可以,但不应该这样做。以前我觉得这是个好主意,但现在我不觉得。

    虽然 trash-put 的界面看起来与 rm 兼容,但它们有不同的语法,这些差异会导致一些问题。比如,用 rm 删除目录时需要 -R , trash-put 则不需要。

    但有时候我忘记用 trash-put 了,真的不能给 rm 设置别名吗?

  • 你可以给 rm 设置一个别名来提醒你不要使用它:

    1
    alias rm='echo "This is not the command you are looking for."; false'

  • 如果你真的要用 rm ,那就在 rm 前加上斜杠来取消别名:

    1
    \rm file-without-hope

    注意,Bash 别名是有在交互式界面才有效,所以使用这个别名不会影响使用 rm 的脚本。

  • 被移动到回收站的文件在哪?从 home 分区移动到回收站的文件在这:

    1
    ~/.local/share/Trash/