web-dev-qa-db-ja.com

lsでtail -fと同等のことをするにはどうすればよいですか?

重複の可能性:
tail -f?を使用してファイルをフォローするのと同じように、コマンドを実行する(繰り返し実行する)ことは可能ですか?

Bashの画面で、ディレクトリにダウンロードされているファイルをリアルタイムで監視したいと思います。

Linuxでtail -fと同等のことを行う簡単な方法はありますか。

36
T. Brian Jones

「監視」コマンドを使用します。

watch ls

これにより、「ls」コマンドが2秒ごとに実行されます。

59
jcater

watchをお持ちの場合は、間違いなく最良の答えです。ただし、完全を期すために、単純なシェルスクリプトを使用して大まかに似たものをシミュレートできます。

while (true)
do
     date
     ls -lrt | tail -n 10
     sleep 2
     clear
done

別の方法は、diffを使用することです。これは、以前存在していたファイルが削除されたかどうかも指摘します。利点はターミナルをクリアしないので、上にスクロールすることですべての変更の完全な記録を見ることができます。欠点は、状態変更の推論を管理するために2つの一時ファイルを作成することです。

ls1="/tmp/listing1.dat"
ls2="/tmp/listing2.dat"
ls -lrt > ${ls1}
ls -lrt > ${ls2}

while (true)
do
     diff ${ls1} ${ls2} | grep '[<>]'
     sleep 2
     cp ${ls2} ${ls1}
     ls -lrt > ${ls2}
done
8
ire_and_curses

inotifywaitをチェックしてください。

たとえば、フォルダabcを監視するには、次のようにします。

while inotifywait -e close_write abc; do
   # do `ls` when abc changed
   ls abc
done
5
daisy