ディレクトリの下にあるファイルを監視する必要があります。以下のスクリプトを perl でコーディングしました。しかし、それは私が望むことをしていません。
- 1 つまたは複数のファイルが到着するたびに、移動を行う必要があります。
- そして、再びファイルを監視し続ける必要があります。
スクリプトはバックグラウンドで実行されている必要があります。
#!/usr/bin/perl use warnings; use File::Copy qw(move); $src_dir = '/root/prasanna/dir'; $tgt_dir = '/root/prasanna/dir/dir1'; while (true) { opendir( DIR, "/root/prasanna/dir" ) or die "Cannot open /root/prasanna/dir: $!\n"; my @Dircontent = readdir DIR; close DIR; my $items = @Dircontent; if ( $items > 2 ) { print "files available"; while ($items) { print $items; move $src_dir. '/' . $items, $tgt_dir . '/' . $items; unlink $items; } } else { sleep 50; } }
上記のコードの問題は、1. if ステートメントが 'files available' を出力し続けることです。無限ループに入り、ファイルを再び監視しません。ファイルに対して操作を行っても、ファイルを再度検索する方法がわかりません。2. スクリプトはバックグラウンドで実行されません。
どんな助けでも大歓迎です。よろしくお願いします。