user2428207
user2428207

Reputation: 825

Shell Script that monitors a folder for new files

I'm not a pro in shell scripting, thats why I ask here :).

Let's say I got a folder. I need a script that monitors that folder for new files (no prefix name of files is given). When a new file gets copied into that folder, another script should start. Has the second script processed the file successfully the file should be deleted.

I hope you can give me some ideas on how to achieve such script :)

Thank you very much in advance. Thomas

Upvotes: 2

Views: 15913

Answers (2)

tesla
tesla

Reputation: 11

try inotify(http://man7.org/linux/man-pages/man7/inotify.7.html)

or you may need to install inotify-tools (http://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/) to use it by shell.

Upvotes: 1

davvs
davvs

Reputation: 1069

Try this:

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

Don't forget to make it executable

chmod +x ./watcher.sh

call it with:

./watcher.sh <dirname>

Upvotes: 5

Related Questions