使用unix ksh shell脚本或perl脚本和触发perl脚本监视新文件的文件夹

Che*_*eso 9 unix shell perl ksh

我一直在谷歌搜索和溢出一点,找不到任何可用的东西.

我需要一个监视公用文件夹的脚本,并在创建新文件时触发,然后将文件移动到私有位置.

/exam/ple/在unix上有一个samba共享文件夹映射到X:\Windows上.在某些操作上,txt文件将写入共享.我想绑架出现在文件夹中的任何txt文件,并将其/pri/vate放在unix上的私人文件夹中.移动该文件后,我想触发一个单独的perl脚本.

编辑 仍然等待看到一个shell脚本,如果有人有任何想法...将监视新文件,然后运行如下所示的东西:

#!/bin/ksh
mv -f /exam/ple/*.txt /pri/vate
Run Code Online (Sandbox Code Playgroud)

小智 9

检查incron.它似乎完全符合你的需要.


ire*_*ses 6

如果我理解正确,你只是想要这样的东西?

#!/usr/bin/perl

use strict;
use warnings;

use File::Copy

my $poll_cycle = 5;
my $dest_dir = "/pri/vate";

while (1) {
    sleep $poll_cycle;

    my $dirname = '/exam/ple';

    opendir my $dh, $dirname 
        or die "Can't open directory '$dirname' for reading: $!";

    my @files = readdir $dh;
    closedir $dh;

    if ( grep( !/^[.][.]?$/, @files ) > 0 ) {
        print "Dir is not empty\n";

        foreach my $target (@files) {
            # Move file
            move("$dirname/$target", "$dest_dir/$target");

            # Trigger external Perl script
            system('./my_script.pl');
    }
}
Run Code Online (Sandbox Code Playgroud)


jso*_*son 5

File :: ChangeNotify允许您监视文件和目录以进行更改.

https://metacpan.org/pod/File::ChangeNotify