将文件重命名为垃圾箱

时间:2011-12-10 17:26:51

标签: c

我正在尝试使用重命名功能(C,在ubuntu下)将文件从一个文件夹移动到另一个文件夹:     rename("./t2.c", "./this/then_this/it_works.c"); 它可以创建奇迹,从当前文件夹中删除文件并将其移动到名称下的then_this文件夹中。

但是当我尝试这个时:     rename("./t2.c", "~/.local/share/Trash/files/it_works.c"); 它只是不起作用,但在终端输入“cd~ / .local / share / Trash / files / it_works.c”确实打开了垃圾桶。

所以我要做的是将文件移动到垃圾箱(删除它)。谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:9)

问题是~仅适用于shell。替换为完整的绝对路径(例如/home/user1031204/.local/...)&重试。

答案 1 :(得分:4)

~是一个只在shell中可用的便捷快捷方式。您可以使用getenv("HOME")实现类似的行为,并将其与目标目录连接。

snprintf(buffer, size_of_buffer, "%s/.local/share/Trash/files/it_works.c",
         getenv("HOME"));

请记住#include <stdlib.h>并拥有一个至少PATH_MAX字节长(limits.h)的缓冲区来存储结果。

答案 2 :(得分:4)

realpath()会对您有所帮助。您可能还想查看glob()wordexp()