как автоматически удалить созданный файл в 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 5

1 ответ:

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

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

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

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

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

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