人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: my_redo_log
●カテゴリ:コンピュータ インターネット
✍キーワード:ディレクトリ ファイル 作成
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● t-wata
●35ポイント

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

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

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

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

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

ls * > /tmp/currentTail

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

find . -type f -cnewer /tmp/currentTail

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


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

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

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


2 ● h_kondo
●35ポイント

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

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


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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ