首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨平台移动到垃圾桶

跨平台移动到垃圾桶
EN

Stack Overflow用户
提问于 2020-10-25 16:33:39
回答 2查看 123关注 0票数 3

有没有跨平台的方法将文件移到垃圾桶?file delete会完全删除文件,并且在unixen上是不可撤销的。即使只在Linux上,找出回收站目录也不是很简单,因为它通常依赖于文件管理器。

我求助于做以下事情:

代码语言:javascript
复制
exec gio trash $file

问题是,这只适用于Gnome,所以即使在Linux上,它也不是跨平台的。

由于我没有Windows机器,所以弄清楚Windows中的垃圾桶/回收站是如何工作的就更加困难了

EN

回答 2

Stack Overflow用户

发布于 2020-10-25 17:18:29

FreeDesktop.org Trash specification说:

对于每个用户来说,必须有一个“主回收站”目录。其名称和位置为$XDG_ data _HOME/Trash;$XDG_DATA_HOME是用户特定数据的基本目录,如桌面基本目录规范中所定义。

如果$XDG_DATA_HOME未设置或为空,则默认为$HOME/.local/share。

但是,您不能简单地将文件移入和移出~/.local/share/Trash。涉及到一些存储原始位置和时间戳的元数据文件。这些元数据文件是纯文本,因此可以在Tcl中轻松处理。

因此,这听起来很容易在Tcl模块中实现。但如果这样的模块已经存在,我就不知道它了。对于学习Tcl的人来说,这可能是一个很好的项目。

新增信息:

像往常一样,TWAPI来拯救视窗系统。twapi_shell包有一个recycle_file命令。

票数 2
EN

Stack Overflow用户

发布于 2020-10-25 23:25:57

以下是如何在macOS上执行此操作。这需要Tclapplescript扩展包:

代码语言:javascript
复制
package require Tclapplescript

proc trash args {
    set TRASH_CMD {
        tell application "Finder" to delete POSIX file "%s"
    }
    foreach file $args {
        set fullFilename [file normalize $file]
        set quoted [string map {\\ \\\\ \\" \\\\"} $fullFilename]
        AppleScript execute [format $TRASH_CMD $quoted]
    }
}

在macOS的最新版本中,您需要在运行时授予适当的权限才能使其正常工作(或者至少在测试时我必须这样做)。

另请参阅:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64521795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档