web-dev-qa-db-ja.com

尾のような連続ls(ファイルリスト)

Linuxのフォルダに作成された新しいファイルを監視しています。時々、「ls-ltr」を発行します。しかし、それを自動的に印刷するプログラム/スクリプトがあり、最新のエントリだけがあればいいのにと思います。それをリストするために短いwhileループを実行しましたが、新しいものではないエントリが繰り返され、新しいファイルがないときに画面がロールアップし続けました。 「ウォッチ」について学びました。これは、必要なものを表示し、N秒ごとに更新しますが、ncursesインターフェイスは必要ありません。テールのようなものを探しています。

  • 連続
  • 新しいものだけを表示します
  • ターミナルで印刷するので、バックグラウンドで実行して他のことを実行し、出力を時々確認して、実行していることと混合することができます:D

要約:入力を取得し、前の入力と比較して、新しいものだけを出力します。そんな変なツールとは思えない、他の場面でも使われているのがわかるので、すでに存在していると思いますが、何も見つかりませんでした。提案?

19
msb

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
11
Sean Bright

非常に便利なコマンドwatchを使用できます

watch -n 10 "ls -ltr"

そして、10秒ごとにlsを取得します。

また、tail -10を追加すると、最新の10個しか取得できません。

watch -n 10 "ls -ltr|tail -10" 
39
opentokix