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


26

当我从计算机中删除十几个图像时,我想知道的事情是:通过rm -rf对目录内容的快速命令,所有图像都很快消失了。当我将十几张左右的图像拖到垃圾桶/回收禁令中时,有时会花费10秒或更长时间。

现在,我确定其中一些来自GUI的开销,例如,如果将文件放入回收站中,文件仍然会以某种形式“存在”,但是还有其他事情吗?造成如此巨大的时间差异?“ rm”和“ delete”是根本不同的命令,因此我正在尝试比较苹果和橙子吗?


1
在Windows上也是如此,大概是出于以下相同的原因。
克里斯H

Answers:


38

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

$ rm -rf 

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

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

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

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

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

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

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

所有这些额外的操作都必须在要删除的树中的每个文件上执行,以确保您能够从垃圾桶中还原任何文件,并能够从垃圾箱中删除名称相同的文件。相同的位置,并且仍还原早期版本。

使用简单rmmv命令都无法完成这些操作。


1
嘿,谁删除了所有评论?我们只是想知道这个答案可能是错误的。至少trash-cli似乎没有递归执行此操作。删除文件夹时,Gnome 3是否真的.trashinfo为每个子文件夹以及所有包含文件的文件递归放置文件?
mb21 2014年

猜猜对他们来说太吵了!;-)
Jordan Plahn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.