21

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

  • 連続
  • 新しいものだけを表示します
  • 端末に出力されるので、バックグラウンドで実行して他のことを行い、時々出力を確認して、自分がしていることと混ざり合うことができます:D

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

4

3 に答える 3

44

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

watch -n 10 "ls -ltr"

そして、あなたはls10秒ごとに取得します。

また、a を追加するtail -10と、最新の 10 個のみが取得されます。

watch -n 10 "ls -ltr|tail -10" 
于 2013-09-05T21:08:04.190 に答える
12

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
于 2013-09-05T21:03:12.510 に答える