用于监视新文件的文件夹的Shell脚本

时间:2013-08-16 06:51:03

标签: shell unix cmd command

我不是shell脚本专家,这就是我在这里问的原因:)。

假设我有一个文件夹。我需要一个脚本来监视该文件夹中的新文件(没有给出文件的前缀名称)。将新文件复制到该文件夹​​时,应启动另一个脚本。如果第二个脚本成功处理了文件,则应删除该文件。

我希望你能就如何实现这样的脚本给我一些想法:)

非常感谢您提前。 托马斯

2 个答案:

答案 0 :(得分:3)

试试这个:

watcher.sh:

#!/bin/bash
if [ -z $1 ];
then
    echo "You need to specify a dir as argument."
    echo "Usage:"
    echo "$0 <dir>"
    exit 1
fi

while true;
do
    for a in $(ls -1 $1/* 2>/dev/null);
    do
        otherscript $a && rm $a #calls otherscript with the file a as argument and removes it if otherscript returned something non-zero
    done
    sleep 2s
done

别忘了让它可执行

chmod +x ./watcher.sh

用它来表示:

./watcher.sh <dirname>

答案 1 :(得分:1)

尝试inotify(http://man7.org/linux/man-pages/man7/inotify.7.html

或者您可能需要安装inotify-tools(http://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/)才能通过shell使用它。