Wie lösche ich automatisch die erstellte Datei unter Linux mit Inotify?
Frage
Ich versuche, eine erstellte Datei mit Inotify zu löschen, aber sie funktioniert nicht:
inotifywait -r --format '%w%f' -e create /test && rm $FILE
Wenn ich eine Datei in /test erstelle, bekomme ich Folgendes:
/test/somefile.txt
rm: missing operand
Try `rm --help' for more information.
Es scheint also, dass die $ -Datei -Variable nicht an den Befehl rm übergeben wird ... wie kann ich das richtig machen? Vielen Dank.
Lösung
Wenn Sie einmal Ihren Inotifywait (ohne das Flag -m) starten, können Sie leicht verwenden Xargs :
inotifywait -r --format '%w%f' -e create /test -q | xargs /bin/rm
Dies wartet auf eine Dateierstellung in /test, geben Sie den Dateinamen Xargs und geben Sie dieses Arg an /bin/rm
Um die Datei zu löschen, wird sie beendet.
Wenn Sie Ihr Verzeichnis kontinuierlich beobachten müssen (mit dem Paramaramerad von -m von InotifyWait), erstellen Sie eine Skriptdatei wie folgt:
inotifywait -m -r --format '%w%f' -e create /test | while read FILE
do
/bin/rm $FILE
done
Und dann wird jede neu erstellte neu erstellte Datei im Verzeichnis /Testverzeichnis entfernt.