Используйте inotifywait
вместо того, чтобы отслеживать файлы и проверять наличие изменений
inotifywait -m -q -e modify --format "%f" {Path_To__Monitored_Directory}
Кроме того, вы можете сделать так, чтобы он выводился в файл, перебирал его содержимое и запускал скрипт для каждой записи.
inotifywait -m -q -e modify --format "%f" -o {Output_File} {Path_To_Monitored_Directory}
пример вывода:
file1
file2
Пример
Мы контролируем каталог с именем /tmp/dir
, который содержит file1
и file2
.
Следующий скрипт, который отслеживает весь каталог и отображает имя файла:
#!/bin/bash
while read ch
do
echo "File modified= $ch"
done < <(inotifywait -m -q -e modify --format "%f" /tmp/dir)
Запустите этот скрипт и измените file1
echo "123" > /tmp/dir/file1
, скрипт выведет следующее:
File modified= file1
Также вы можете посмотреть ответ stackoverflow