Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用“监视”每秒复制两次目录中的新文件_Unix_Watch_Cp - Fatal编程技术网

Unix 使用“监视”每秒复制两次目录中的新文件

Unix 使用“监视”每秒复制两次目录中的新文件,unix,watch,cp,Unix,Watch,Cp,我有一个文件夹(foo),我想每秒检查两次。如果该文件夹中有任何新文件,我希望将其复制到第二个文件夹(foo2)。我想用手表和cp。我用的是tcsh 如何做到这一点 这就是我正在尝试的: touch lastChanged watch --interval=.5 'if [[ $(ls foo) ]] then cp $; else echo "nothing new";fi 这似乎对我有用。我愿意接受更好的答案 touch lastChecked watch --interval=.5 'i

我有一个文件夹(foo),我想每秒检查两次。如果该文件夹中有任何新文件,我希望将其复制到第二个文件夹(foo2)。我想用手表和cp。我用的是tcsh

如何做到这一点

这就是我正在尝试的:

touch lastChanged
watch --interval=.5 'if [[ $(ls foo) ]] then cp $; else echo "nothing new";fi

这似乎对我有用。我愿意接受更好的答案

touch lastChecked
watch --interval=.5 'if [[ $(find foo -newer lastChecked -ls -exec cp {} foo2 \; then touch lastChecked; else echo "nothing new"; fi 
手表每秒检查两次

查找查找比“lastChecked”文件更新的文件并复制这些文件

然后触摸最后一次检查


触摸lastChecked也将允许在文件更新时进行cping。

这似乎对我有效。我愿意接受更好的答案

touch lastChecked
watch --interval=.5 'if [[ $(find foo -newer lastChecked -ls -exec cp {} foo2 \; then touch lastChecked; else echo "nothing new"; fi 
手表每秒检查两次

查找查找比“lastChecked”文件更新的文件并复制这些文件

然后触摸最后一次检查


触摸lastChecked也将允许在文件更新时进行cping。

FWIW-如果您有inotify命令,您可能希望改用该命令。您可以告诉它在创建文件(不知道您在做什么)、写入文件、打开文件等时通知您。您希望现在刚刚关闭的文件可以复制整个文件。我建议这样做是因为您似乎是在linux上-watch命令是大多数linux发行版的一部分。@jimmcnamara不幸的是,我没有它,也没有访问它的权限。我不知道csh或tcsh,因此我无法在这方面提供帮助。但是,每500毫秒运行一次“ls”,然后再进行额外处理将消耗资源,而且您无法保证刚才复制的文件已完全写入并关闭,好吧。当您对一个文件进行cp时,您只会得到当前写入该文件的内容。我不知道这是否是你的问题。如果我理解正确,您可能会在文件增长时重复复制文件。cp不是智能的,cp是整个文件。我只需要它运行一点FWIW-如果你有inotify命令,你可能会想用它来代替。您可以告诉它在创建文件(不知道您在做什么)、写入文件、打开文件等时通知您。您希望现在刚刚关闭的文件可以复制整个文件。我建议这样做是因为您似乎是在linux上-watch命令是大多数linux发行版的一部分。@jimmcnamara不幸的是,我没有它,也没有访问它的权限。我不知道csh或tcsh,因此我无法在这方面提供帮助。但是,每500毫秒运行一次“ls”,然后再进行额外处理将消耗资源,而且您无法保证刚才复制的文件已完全写入并关闭,好吧。当您对一个文件进行cp时,您只会得到当前写入该文件的内容。我不知道这是否是你的问题。如果我理解正确,您可能会在文件增长时重复复制文件。cp不智能,cp是整个文件。我只需要它运行一点