我编写了一个基本的shell脚本,它将指定的文件移动到垃圾箱目录中。脚本如下:
#!/bin/bash
#move items to dustbin directory
mv "$@" ~/dustbin/
echo "File moved to dustbin"
这对我来说很好,我指定的任何文件都会移动到垃圾箱目录。但是,我想要做的是创建一个新脚本,将垃圾箱目录中的文件移回其原始目录。我知道我可以轻松编写一个脚本,将其移回用户指定的位置,但我更愿意将其移动到原始目录。
这可能吗?
我正在使用Mac OS X 10.6.4和终端
答案 0 :(得分:3)
您必须存储原始文件的来源。可能在单独的文件,数据库或文件属性(元数据)中。
创建一个包含2列的日志文件:
无论如何,您将需要此日志文件 - 当用户删除不同目录中的2个文件但名称相同时,您会怎么做? /home/user/.wgetrc
和/home/user/old/.wgetrc
?
当用户删除文件,创建一个具有相同名称的新文件,然后将其删除时,您会怎么做?您需要版本或时间戳等。
答案 1 :(得分:1)
您需要将原始位置存储在数据库或文件的扩展属性中。数据库绝对是最简单的方法,尽管扩展属性会更强大。查看〜/ .Trash /我看到一些,但并非所有文件都有扩展属性,所以我不确定Apple是如何做到的。
答案 2 :(得分:1)
您需要以某种方式编码文件中的源目录。我认为最简单的方法是更改垃圾箱目录中的文件名。因此 /home/user/music/song.mp3 变为〜/ dustbin / song.mp3 | home_user_music
当你复制它时,你的脚本需要处理文件名并构建从|。
开始的路径答案 3 :(得分:1)
另一种方法是让文件系统成为你的数据库。
从/some/directory/somewhere/filename
移出的文件将移至~/dustbin/some/directory/somewhere/filename
,您可以find ~/dustbin -name "$file"
根据其基本名称(来自用户输入)查找该文件。然后你只需修剪"〜/ bustbin"从find
的输出中,您已准备好使用目的地。如果find
返回了多个文件,则可以列出建议的文件以供用户选择。如果您希望能够回滚到早期版本,可以使用~/dustbin/$deletiondate
。
您可以执行cron
作业,定期删除旧文件和目录(如果为空)。