Answers:
正如您正确地注意到的,GUI所做的不仅仅是“删除”文件。
$ rm -rf
只是递归到文件夹中,删除在那里找到的文件和文件夹。
GUI首先扫描整个树以找出其中的内容(因此它知道绘制漂亮的条形图需要做多少工作),然后再次遍历树,再次将文件从当前位置移动到树的位置。您特定GUI的垃圾桶文件。这种移动需要更长的时间,因为它必须首先生成一个新的唯一文件名,将文件链接到回收站文件夹中,然后将其与当前文件夹断开链接,并更新文件的来源索引,以便可以“撤消”它们-许多操作,而不只是一项。
例如,在Gnome 3上,文件被移动到以下位置:
~/.local/share/Trash/files/<filename>[.<version>]
where filename
是原始文件名,并且version
是递增版本号,以确保文件唯一(第一个文件实例没有版本号)。与此相关的是.trashinfo
存储在文件夹中的文件:
~/.local/share/Trash/info/<filename>[.<version>].trashinfo
该文件包含删除前文件的原始路径,以及删除该文件的日期和时间。
所有这些额外的操作都必须在要删除的树中的每个文件上执行,以确保您能够从垃圾桶中还原任何文件,并能够从垃圾箱中删除名称相同的文件。相同的位置,并且仍还原早期版本。
使用简单rm
或mv
命令都无法完成这些操作。
trash-cli
似乎没有递归执行此操作。删除文件夹时,Gnome 3是否真的.trashinfo
为每个子文件夹以及所有包含文件的文件递归放置文件?