コマンドに従う(繰り返し実行する)ことは可能ですか?tail -fを使用してファイルを追跡するので?


10

「Detail.out」ファイルを生成するスクリプトがあります。ファイルに特定の数の行(およそ21025)が含まれていると、スクリプトは完了します。だから私はコマンドプロンプトに座って自分が走っているのを見つけます:

[me@somewhere myDir]$ wc -l */Detail.out
  21025 A/Detail.out
  21025 B/Detail.out
  21025 C/Detail.out
  12995 D/Detail.out
  10652 E/Detail.out
   3481 F/Detail.out
  21027 G/Detail.out
  21025 H/Detail.out
  21025 I/Detail.out
  ...   ...

以前tail -fは特定のファイルを監視していたが、wc -l */Detail.out上記のコマンドの出力を追跡したい。 これは可能ですか?tcshそれが重要であれば、 私は現在Ubuntu 11.04で使用しています。

回答:


18

watchコマンドを試してみてください。ほとんど誰もが一度に独自のバージョンを書いたのではないかと思います。(安いバージョンはwhile :; do clear; "$@"; sleep 5; doneです。)


0

あなたがそれを知っているかどうかはわかりませんが、プログラムの出力をファイルにリダイレクトすることもできます。http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlを参照してください。したがって、もう1つの方法は、出力をファイルにリダイレクトし、そのファイルの末尾を使用することです。 。

$ find . -name "Detail.out" | xargs wc -l >> detail-out-list.txt

そして、別のターミナルで$ tail -f detail-out-list.txtは、慣れているように実行できます。

セレブが指摘したように、それはあなたが望むもの(そのファイルをさらに検査するか、またはいくつかの履歴を持つため)かそうでないかもしれないいくつかのファイルを残しwatch、あなたのためのように何も定期的に実行されません。


これはOPの質問にはまったく対応していません。単に作業を別のコマンドに任せて、実行してクリーンアップするためにまったく新しいもののレイヤーが必要です。
カレブ

@Caleb:なぜこれがそんなにひどい答えなのかははっきりしません。出力ファイルは/ tmpにある可能性があるため、クリーンアップする必要はありません。「どうすればコマンドを繰り返し実行できるのか」という質問ではなかったと思います。しかし、「繰り返し実行されるコマンドをどのように追跡できますか?」私が見る限り、これはOPの質問に答えるように見えます...より注意深く読んでも大丈夫です、私は現在投稿されているように質問が曖昧だと思います:「(繰り返し実行)」は「(繰り返し実行されています) )」または「(つまり、繰り返し実行するにはどうすればよいですか?)」
iconoclast 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.