6

I am trying to delete a created file with inotify but it doesn't work:

inotifywait -r --format '%w%f' -e create /test && rm $FILE

when i create a file in /test I get this:

/test/somefile.txt
rm: missing operand
Try `rm --help' for more information.

so it seems that the $FILE variable is not passed to the rm command... how can I do this correctly? Thanks.

MilMike
  • 12,571
  • 15
  • 65
  • 82
  • I hope you don't do that to get temporary files! To get a temporary file, just `unlink` the entry in its directory while still having an `open`-ed file descriptor... which is what `tmpfile` does. – Basile Starynkevitch Nov 29 '11 at 20:45

1 Answers1

7

When launching your inotifywait once (without the -m flag), you can easily use xargs :

inotifywait -r --format '%w%f' -e create /test -q | xargs /bin/rm

that will wait for a file creation in /test, give the filename to xargs and give this arg to /bin/rm to delete the file, then it will exit.

If you need to continuously watch your directory (with the -m param of inotifywait), create a script file like this :

inotifywait -m -r --format '%w%f' -e create /test | while read FILE
do
        /bin/rm $FILE
done

And then, every newly file created in you /test directory will be removed.

Cédric Julien
  • 78,516
  • 15
  • 127
  • 132