为什么在Nautilus中清空垃圾箱要花这么长时间?

对于这个问题,"大目录"的意思是例如Linux内核git仓库或Chromium源代码。
如果我从shell中使用rm -rf删除这样一个大目录,最多只需要几秒钟就能完成删除。
如果我先将其移动到垃圾箱,然后清空垃圾箱,第一步操作只需要不到一秒钟,然后实际删除需要几分钟(我们说的是两位数)。
为什么清空垃圾箱如此慢?当它说"正在准备"时,它在做什么?运行rm -rf ~/.local/share/Trash/需要多少准备工作?

I've been looking at this for over 20 minutes now.


如果你有一些空闲时间,可以看看源码中的libnautilus-private/nautilus-file-operations.c文件(通过apt-get source nautilus获取)。我个人没有阅读C语言的勤奋和耐心。但是这个问题很有趣。点赞+1 - phipsalabim
3使用rm -rf ~/.local/share/Trash可能会更快。请参考http://askubuntu.com/a/468722/2273。 - Adam Monsen
1个回答

当第一次操作发生时,它只是将文件移动到垃圾箱。
当你“垃圾”这些文件时,它会将整个树文件加载到内存中,然后逐个删除每个文件。这样可以进行时间计算,以知道删除文件需要多长时间,要删除多少个文件,这些文件有多大,尽管大部分参数在这里没有被使用,并且允许你按下那个小红叉来停止该过程。
这就是为什么我总是从shell中删除的原因。

当我访问Nautilus的垃圾桶时,它会导致Nautilus冻结很长时间,我无法点击任何东西;我想知道是否有办法禁用它或者在Nautilus上弹出窗口,以便我真正想要查看它时才能看到,因为我还用它做其他很多事情,突然间我不得不等待大约3分钟才能再次使用Nautilus,如果我不想重新启动的话 :( - Aquarius Power