我正在尝试设置一个 inotifywait 脚本来执行此操作:
- 第 1 步:创建目录,将文件放入其中,这会触发 inotifywatch 触发第 2 步
- 第 2 步:30 分钟后,目录移动并创建符号链接回到旧的根目录
这是我到目前为止所拥有的,但它并不完全有效。它是从我在网上找到的不同示例中拼凑而成的。
inotify.sh:
#!/bin/sh
cd ~/automove/old/
inotifywait -m -e close_write --format %w%f . | while IFS= read -r file; do
echo $file
sleep 15
sh ~/automove/move.sh "$file" ~/automove/new/
done
移动.sh:
#!/bin/sh
original="$1" target="$2"
if [ -d "$target" ]; then
target="$target/${original##*/}"
fi
mv -- "$original" "$target"
ln -s -- "$target" "$original"
我的问题如下:
- 带有“撇号”的目录会被破坏。
- 似乎 inotifywait 会在新的符号链接上被触发,从而创建一个疯狂的无限循环。
- 如果一个目录触发了 inotifywait,然后它休眠了 15 秒(我将其设置为测试,实际上我想要 30 分钟),然后在原来的 15 秒结束之前出现另一个目录,它甚至不会开始第二个15 秒睡眠,直到第一个完成。
我需要为每个 inotifywait 匹配单独触发睡眠。谁能告诉我如何修改它以按照我需要的方式工作?