I'm not a fan of inotifytools which includes inotifywait. I would advise users to exercise utmost caution while using it because it is totally erroneous when it comes to recursive watch on moved(from and to) directories.
Just to get my point across, let's consider a relevant situation that you currently have; dir moves. Say, we are watching /foo/bar:
On mv /foo/bar /choo/tar, even after moving out(rename?) /foo/bar to /choo/tar, it will continue to report events on /choo/tar as /foo/bar erroneously. This is unacceptable! It should not continue to watch a dir that was moved out of the root watch path. And, to make it worse, it continues to report it with a stale path that doesn't exist.
Besides, why is a move event reported as create? Outrageous! A move is totally different from a create! A move is a move, it must be reported as a move. It's a shame that inotifytools is hugely popular and unsuspecting users are unaware of its fallacies.
Now that I have vented out the frustration(which is relevant though), let's help fix your situation.
run fluffy: terminal:1
root@six-k:/home/lab/fluffy# fluffy | \
while read events path; do \
if ! echo $events | grep -qie "ISDIR"; then \
echo "$events $path"; \
fi
done
Reproduce your situation: terminal:2
root@six-k:/tmp# pwd
/tmp
root@six-k:/tmp# mkdir test
root@six-k:/tmp/test# ls -l
total 0
root@six-k:/tmp/test# mkdir -p d1/dd1
root@six-k:/tmp/test# echo "This file will be moved" | cat >> d1/dd1/f1
root@six-k:/tmp/test# mkdir -p d2/
root@six-k:/tmp/test# ls -l d2
total 0
root@six-k:/tmp/test# fluffyctl -w ./d2
root@six-k:/tmp/test# mv d1 d2/
root@six-k:/tmp/test# ls -lR d1
ls: cannot access d1: No such file or directory
root@six-k:/tmp/test# ls -lR d2
d2:
total 4
drwxr-xr-x 3 root root 4096 Mar 18 20:03 d1
d2/d1:
total 4
drwxr-xr-x 2 root root 4096 Mar 18 20:04 dd1
d2/d1/dd1:
total 4
-rw-r--r-- 1 root root 24 Mar 18 20:04 f1
root@six-k:/tmp/test# echo "Events will be produced on this moved file" | cat >> d2/d1/dd1/f1
root@six-k:/tmp/test# cat d2/d1/dd1/f1
This file will be moved
Events will be produced on this moved file
root@six-k:/tmp/test# echo "New files are also watched in the moved dir" | cat >> d2/d1/dd1/f2
root@six-k:/tmp/test# cat d2/d1/dd1/f2
New files are also watched in the moved dir
root@six-k:/tmp/test# fluffyctl -I d2
root@six-k:/tmp/test# fluffy exit
Event log: terminal:1
root@six-k:/home/lab/fluffy# fluffy | \
> while read events path; do \
> if ! echo $events | grep -qie "ISDIR"; then \
> echo "$events $path"; \
> fi
> done
OPEN, /tmp/test/d2/d1/dd1/f1
MODIFY, /tmp/test/d2/d1/dd1/f1
CLOSE_WRITE, /tmp/test/d2/d1/dd1/f1
OPEN, /tmp/test/d2/d1/dd1/f1
ACCESS, /tmp/test/d2/d1/dd1/f1
CLOSE_NOWRITE, /tmp/test/d2/d1/dd1/f1
CREATE, /tmp/test/d2/d1/dd1/f2
OPEN, /tmp/test/d2/d1/dd1/f2
MODIFY, /tmp/test/d2/d1/dd1/f2
CLOSE_WRITE, /tmp/test/d2/d1/dd1/f2
OPEN, /tmp/test/d2/d1/dd1/f2
ACCESS, /tmp/test/d2/d1/dd1/f2
CLOSE_NOWRITE, /tmp/test/d2/d1/dd1/f2
IGNORED,ROOT_IGNORED,WATCH_EMPTY, /tmp/test/d2
IGNORED, /tmp/test/d2/d1
root@six-k:/home/lab/fluffy#
Unlike inotifytools, fluffy faithfully reports the events!
I hope this example will be sufficient for you to step it up for your use case. Cheers!