如何使用inotify在Linux中自动删除已创建的文件?

6
我正在尝试使用inotify删除已创建的文件,但是它不起作用:
inotifywait -r --format '%w%f' -e create /test && rm $FILE

当我在/test目录中创建一个文件时,我会看到以下内容:
/test/somefile.txt
rm: missing operand
Try `rm --help' for more information.

看起来$FILE变量没有传递给rm命令...我该怎么正确地做呢?谢谢。

希望你不是为了获取临时文件而这样做!要获取临时文件,只需在仍具有“打开”文件描述符的情况下,在其目录中取消链接条目... 这就是tmpfile所做的。 - Basile Starynkevitch
1个回答

7

当您启动inotifywait时(不带-m标志),您可以轻松使用xargs

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

该命令会等待/test目录中的文件创建,将文件名传递给xargs,并将此参数传递给/bin/rm以删除该文件,然后退出。

如果您需要持续监视您的目录(使用inotifywait的-m参数),请创建一个类似以下内容的脚本文件:

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

然后,你在/test目录中创建的每个新文件都将被删除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接