特定のディレクトリ内のファイル(作成済み+新規に作成)に対してtail -f 相当の処理を実現

する方法を教えてください。
特定のディレクトリ内のファイル(作成済み)であればtail -f * などで実現できることは理解しています。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/19 21:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:t-wata No.1

回答回数82ベストアンサー獲得回数13

ポイント35pt

tailコマンドでは無理です。

「*」はshellが展開するので、tailコマンドが受け取るときには、カレントディレクトリのファイル一覧に置き換えられているからです。

echo * とかを実行するとわかります。

なのでプログラムを作るか探すか、スクリプトを組むしかないですね。具体的な目的や用件がわからないとなんともいえませんが。

たとえば、tail直前に、カレントディレクトリのファイル一覧を

ls * > /tmp/currentTail

みたいにどっかに残して、からtail -fをバックグラウンドで実行して、定期的に

find . -type f -cnewer /tmp/currentTail

とかで、新しくファイルができたか確認して、新しくできていたら/tmp/currentTailを再作成して、tailを実行、とかですかね。


ただ、このやり方はlsした後tailを実行する前にファイルが作られると駄目なので、頻繁にファイルが作成されるような場合はうまくいかないですし、

ログローテートみたいなものでファイルが切り変わるような場合も対応できないです。

いずれにせよ目的や用件しだいでしょう。

id:h_kondo No.2

回答回数33ベストアンサー獲得回数3

ポイント35pt

WindowsですとFileSystemWatcherでファイルの作成を監視できます。

http://www.atmarkit.co.jp/fdotnet/dotnettips/281filewatch/filewa...


Unix環境ですとNFSを監視するような製品があります。

http://cwatcher.jp/product/unix_a.html

Unix環境でファイルシステムレベルでファイル作成を監視してくれるようなものは無さそうです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません