将文件添加到文件夹时自动启动程序

我的笔记本电脑上有Lubuntu 14.04 LTS几周了。 我一直在努力定制操作系统等,以及安装我日常使用所需的一切。 我做的一件事就是编写一个C程序,该程序在运行时可以从Downloads文件夹中快速复制或移动任何文件到任何位置。 可以轻松添加新目的地。

无论如何,我这样做是因为我从我的下载文件夹中分散了我的文件,所以更改Firefox中的默认下载位置真的不是答案。 相反,我希望能够根据具体情况进行选择。 该程序工作正常,但是,我想将文件下载到Downloads文件夹时随时在终端中自动运行。

有几个解决方案:

选项1:无需安装其他软件:

您可以使用次要脚本来监视Downloads文件夹,就像watch命令一样,但要确保它只在文件添加到目录时执行命令。 将下面的脚本复制到空文件中,设置要监视的文件夹的路径,以及将文件添加到目录时要运行的命令。 将其保存为watch.py并为方便起见使其可执行(因此您不必使用语言前缀)。 将其添加到您的启动应用程序:

– 在Lubuntu:

首选项> LXSession的默认应用程序,然后选择“自动启动”

– 或在Ubuntu中:

系统设置>键盘>快捷方式>自定义快捷方式

添加命令以在登录时启动脚本:

 /path/to/watch.py 

剧本:

 #!/usr/bin/env python import subprocess import time folder = "/path/to/folder/to/watch" command_to_run = "command_to_run" def get_drlist(): return subprocess.check_output(["ls", folder]).decode('utf-8').strip().split("\n") while True: drlist1 = get_drlist() time.sleep(2) drlist2 = get_drlist() if len(drlist2) > len(drlist1): subprocess.Popen(["/bin/bash", "-c", command_to_run]) 

选项2:使用inotify-tools:

inotify-tools是一个工具,您可以使用(ao)来查看已定义的文件夹,并在将新文件添加到文件夹时执行(定义)操作。

  1. 安装inotify-tools

     sudo apt-get install inotify-tools 
  2. 将下面的脚本粘贴到一个空文件中,设置要监视的文件夹(“/ path / to / your / downloadfolder”),定义它应该运行的命令(“command-to-run-your-application”)安全它作为notifyscript.sh ,为方便起见使其可执行,并将其添加到启动应用程序:(首选项> LXSession的默认应用程序,然后选择“自动启动”。添加命令:

     /path/to/notifyscript.sh 

剧本:

 #!/bin/bash while true do fileName=$(inotifywait -r -e create /path/to/your/downloadfolder | sed -r 's/^.*CREATE(,ISDIR)*\s+(.*)$/\2/g') command-to-run-your-application done 

请注意,在这两种情况下,您的应用程序将在创建文件时调用,但尚未完全下载。 如果下载量很大,则可能需要一些时间。


编辑

此外,如果必须将新添加的文件用作添加文件时运行的命令的参数 ,请使用以下版本:

它使用的格式为:

   

所以“通常”。 作为一个例子,我离开gedit ,所以脚本将(尝试)用gedit打开新添加的文件。

 #!/usr/bin/env python import subprocess import time folder = "/path/to/folder/to/watch" application = "gedit" def get_drlist(): return subprocess.check_output(["ls", folder]).decode('utf-8').strip().split("\n") while True: drlist1 = get_drlist() time.sleep(2) drlist2 = get_drlist() for file in [f for f in drlist2 if not f in drlist1]: command = application+" '"+folder+"/"+file+"'" subprocess.Popen(["/bin/bash", "-c", command]) 

尝试在preference firefox菜单的General选项卡中选中“ 始终询问我在哪里保存文件 ”选项。

每当您要求下载文件时,Firefox都会询问您保存文件的位置,您将能够选择首选文件夹。