移动文件时Unix调用脚本

时间:2010-06-26 09:42:18

标签: unix callback hook

我有大量文件被转储到几个不同的文件夹中。我已经尝试过多次组织它们,不幸的是,没有任何组织结构对所有这些组织都有意义。

我最终决定自己编写一个应用程序,我可以将标签添加到文件中,然后组织可以根据实际的组织结构进行自定义。

我想防止获取孤立数据。如果我移动/重命名文件,应该告诉我的标签应用程序,以便它可以更新数据库中的名称。我不希望它标记不再存在的文件,并且不得不为以前存在的文件读取标签。

有没有办法可以编写一个挂钩到mv命令的回调,这样如果我重命名或移动我的文件,他们会调用脚本,这会通知我的app,它可以更新它的数据库?

我的应用程序是用Ruby编写的,但如果有必要,我愿意使用C语言。

2 个答案:

答案 0 :(得分:2)

如果您使用Linux,则可以使用inotifymanpage)来监控文件事件的目录。似乎有ruby interface for inotify

来自维基百科:

Some of the events that can be monitored for are:
IN_ACCESS - read of the file
IN_MODIFY - last modification
IN_ATTRIB - attributes of file change
IN_OPEN and IN_CLOSE - open or close of file
IN_MOVED_FROM and IN_MOVED_TO - when the file is moved or renamed
IN_DELETE - a file/directory deleted
IN_CREATE - a file in a watched directory is created
IN_DELETE_SELF - file monitored is deleted

这不适用于Windows(我认为除了Linux之外也不适用于其他Unices),因为那里不存在inotify。

答案 1 :(得分:0)

您可以控制用户的路径吗?放置脚本或exe,并在标准mv命令之前指向路径。让此脚本执行您需要的操作,然后调用标准mv来执行移动。

或者每个用户个人资料中的别名。让别名调用替换mv命令。

或者重命名现有的mv命令并在同一目录中放置一个替换,将其命名为mv,并在执行完所需的操作后调用新重命名的mv命令。