2011-11-29 11 views
5

Tôi cố gắng để xóa một tập tin được tạo ra với inotify nhưng nó không hoạt động:cách tự động xóa tệp đã tạo trong linux bằng inotify?

inotifywait -r --format '%w%f' -e create /test && rm $FILE 

khi tôi tạo ra một tập tin trong/thử nghiệm tôi có được điều này:

/test/somefile.txt 
rm: missing operand 
Try `rm --help' for more information. 

vậy có vẻ như rằng Biến $ FILE không được chuyển tới lệnh rm ... làm thế nào tôi có thể làm điều này một cách chính xác? Cảm ơn.

+0

Tôi hy vọng bạn không làm điều đó để nhận các tệp tạm thời! Để có được một tập tin tạm thời, chỉ cần 'bỏ liên kết 'mục trong thư mục của nó trong khi vẫn còn có một bộ mô tả tập tin' mở'-ed ... đó là những gì 'tmpfile' làm. –

Trả lời

6

Khi tung ra inotifywait của bạn một lần (không có cờ -m), bạn có thể dễ dàng sử dụng xargs:

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

rằng sẽ chờ đợi cho một sáng tạo tập tin trong/kiểm tra, cung cấp cho các tên tập tin để xargs và cung cấp cho arg này đến /bin/rm để xóa tệp, sau đó tệp sẽ thoát.

Nếu bạn cần phải liên tục xem thư mục của bạn (với param -m của inotifywait), tạo ra một tập tin kịch bản như thế này:

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

Và sau đó, mỗi tập tin mới được tạo ra trong bạn/thư mục thử nghiệm sẽ được đã xóa.

Các vấn đề liên quan