Bash
如何結合 inotify 和 tail 命令列印每個修改文件的最後一行
我有這個命令,當一個文件在一個具體目錄下被修改(不包括一些路徑)時,它會告訴我:
inotifywait -m -q -r --format '%T % e %w%f' --excludei '/trash/' --timefmt '%d/%m/%Y-%H:%M:%S%z' /my/monitored/folder
有沒有辦法將此(或類似)命令與 結合起來
tail
,以便我可以檢索每個修改文件的最後一行?重要的是,此組合輸出文件的路徑和添加的最後一行。
在您的問題中,您說要掃描文件是否已被修改,但在您的命令中沒有指定事件。
所以我的回答將使用該
modify
事件:inotifywait -m -q -r \ --format '%T % e %w%f' \ --excludei '/trash/' \ --timefmt '%d/%m/%Y-%H:%M:%S%z' /my/monitored/folder | \ while IFS=' ' read -r time event file; do echo "file: $file" echo "modified: $time" last_line=$(tail -1 "$file") echo "last line: $last_line" echo done
Wich 將輸出如下內容:
file: /path/file.txt modified: 17/02/2021-09:17:02-0300 last line: foo