如何在shell脚本中每2分钟查找一个目录中是否有新文件?

use*_*759 6 unix bash shell

我有一个名为的目录/home/user/local.每隔两分钟左右,新文件将被转储到此目录中.我需要每2分钟检查一次这个目录,看看是否有新的文件/文件落在那里.如果有新文件,我需要将它的列表放入变量中以便稍后使用.我该怎么做这个shell脚本?

lea*_*fei 6

#! /usr/bin/env bash

FILELIST=/tmp/filelist
MONITOR_DIR=/home/usr/local

[[ -f ${FILELIST} ]] || ls ${MONITOR_DIR} > ${FILELIST}

while : ; do
    cur_files=$(ls ${MONITOR_DIR})
    diff <(cat ${FILELIST}) <(echo $cur_files) || \
         { echo "Alert: ${MONITOR_DIR} changed" ;
           # Overwrite file list with the new one.
           echo $cur_files > ${FILELIST} ;
         }

    echo "Waiting for changes."
    sleep $(expr 60 \* 2)
done
Run Code Online (Sandbox Code Playgroud)

快速而肮脏的方式.:)它将监视目录中的更改,不仅是在新文件被转储时,而且还有一些文件丢失/删除.

文件列表存储在变量中$cur_files.


sam*_*hen 2

inotifywait正是您正在寻找的: http: //linux.die.net/man/1/inotifywait