Linuxのフォルダに作成された新しいファイルを監視しています。時々、「ls-ltr」を発行します。しかし、それを自動的に印刷するプログラム/スクリプトがあり、最新のエントリだけがあればいいのにと思います。それをリストするために短いwhileループを実行しましたが、新しいものではないエントリが繰り返され、新しいファイルがないときに画面がロールアップし続けました。 「ウォッチ」について学びました。これは、必要なものを表示し、N秒ごとに更新しますが、ncursesインターフェイスは必要ありません。テールのようなものを探しています。
要約:入力を取得し、前の入力と比較して、新しいものだけを出力します。そんな変なツールとは思えない、他の場面でも使われているのがわかるので、すでに存在していると思いますが、何も見つかりませんでした。提案?
inotifywait
(Debian/Ubuntuを使用している場合はinotify-toolsパッケージから入手可能)にアクセスできる場合は、次のようなスクリプトを作成できます。
#!/bin/bash
WATCH=/tmp
inotifywait -q -m -e create --format %f $WATCH | while read event
do
ls -ltr $WATCH/$event
done
これは、ls
と同じ情報を提供しないワンライナーですが、ファイル名を出力します。
inotifywait -q -m -e create --format %w%f /some/directory
非常に便利なコマンドwatch
を使用できます
watch -n 10 "ls -ltr"
そして、10秒ごとにls
を取得します。
また、tail -10
を追加すると、最新の10個しか取得できません。
watch -n 10 "ls -ltr|tail -10"