为什么从命令行删除比从 GUI 删除花费的时间少得多?

为什么从命令行删除比从 GUI 删除花费的时间少得多?

当我从电脑中删除十几张图片时,我有点疑惑:只要rm -rf对目录内容执行快速命令,所有图片就会瞬间消失。当我将同样的十几张图片拖到垃圾桶/回收站时,有时需要 10 秒或更长时间。

现在我确信其中一些来自 GUI 等的开销,其中一些可能是如果文件被放入回收站,它仍然以某种形式“存在”,但还有其他什么可以解释这种巨大的时间差异?“rm”和“delete”是完全不同的命令吗?所以我想比较苹果和橘子?

答案1

正如您正确注意到的,GUI 的作用不仅仅是“删除”文件。

$ rm -rf 

只是递归到文件夹中删除在其中找到的文件和文件夹。

GUI 首先扫描整个树以找出其中的内容(这样它就知道要绘制漂亮的条形图需要做多少工作),然后它再次遍历树,将文件从当前位置移动到特定 GUI 的垃圾箱文件的位置。移动过程需要更长的时间,因为它必须首先生成一个新的唯一文件名,链接垃圾箱文件夹中的文件,然后取消与当前文件夹的链接,并更新文件来源的索引,以便可以“撤消”它们 - 需要多次操作,而不仅仅是一次。

例如,在 Gnome 3 上,文件被移动到以下位置:

~/.local/share/Trash/files/<filename>[.<version>]

其中filename是原始文件名,version是递增的版本号,以确保文件的唯一性(第一个文件实例没有版本号)。与之关联的是.trashinfo存储在文件夹中的文件:

~/.local/share/Trash/info/<filename>[.<version>].trashinfo

该文件包含了该文件被删除前的原始路径,以及该文件被删除的日期和时间。

所有这些额外的操作都必须对您要删除的树中的每个单独文件执行,以确保您能够从垃圾箱中恢复任何文件,并且能够从同一位置删除同名的文件并仍恢复早期版本。

这些都不是靠简单的rmmv命令就能完成的。

相关内容