Как автоматически удалить созданный файл в Linux с inotify?

Я пытаюсь удалить созданный файл с помощью 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... как я могу сделать это правильно? Благодарю.

1 ответ

Решение

При однократном запуске inotifywait (без флага -m) вы можете легко использовать xargs:

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

которая будет ждать создания файла в /test, присвоит имя файла xargs и передаст этот аргумент /bin/rm удалить файл, затем он выйдет.

Если вам нужно постоянно следить за вашим каталогом (с параметром -m inotifywait), создайте файл сценария следующим образом:

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

И затем каждый новый файл, созданный в директории you /test, будет удален.

Другие вопросы по тегам