Jak mohu okamžitě zjistit, kdy byly do složky v bash skriptu přidány nové soubory? Přál bych si, aby skript zpracovával soubory, jakmile jsou ve složce vytvořeny. Existují nějaké metody kromě plánování úlohy cron, která kontroluje nové soubory každou minutu?
Přijatá odpověď:
Měli byste zvážit použití inotifywait
, jako příklad:
inotifywait -m /path -e create -e moved_to |
while read dir action file; do
echo "The file '$file' appeared in directory '$dir' via '$action'"
# do something with the file
done
V Ubuntu inotifywait
poskytuje inotify-tools
balík. Od verze 3.13 (aktuální v Ubuntu 12.04) inotifywait
bude obsahovat název souboru bez volby -f. Starší verze může být nutné vynutit. Důležité je poznamenat, že -e
možnost inotifywait
je nejlepší způsob, jak provést filtrování událostí. Také vaše read
příkaz může přiřadit poziční výstup do více proměnných, které můžete použít nebo ignorovat. K předzpracování výstupu není potřeba používat grep/sed/awk.