web-dev-qa-db-ja.com

UNIXのtailコマンドと同等のWindows

私はそれが書き込まれている間私がログファイルの出力を見ることを可能にするUnixの 'tail'コマンドと同等のものを探しています。

374
Liam

GNU Utilities for Win32 のようなものをインストールすることをお勧めします。それは尾を含むほとんどのお気に入りがあります。

131
Ryan Duffield

PowerShellを使用している場合、これは機能します。

Get-Content filenamehere -Wait -Tail 30

下からStefanのコメントを投稿して、人々がそれを見逃さないようにする

PowerShell 3では、最後のx行だけを含めるための-Tailパラメーターが導入されました。

378
Alex

私はいつも Baretail をWindowsでの末尾に使っています。無料だし、かなりいいね。

編集:ベアテールの詳細についてはを参照してください。 この質問

61
Instantsoup

Cygwin の一部としてtailを取得することができます。

31
Quentin

かなりの数の選択肢がありますが、それらのすべてにはより高度な機能の欠点があります。

  • Windows Server 2003ツール は、 リソースキットツールと一緒にダウンロード にすることができる単純な末尾を提供します。それは多くの点であまりにも制限されています(ファイルに追従するロック、 - pidのような多くのオプションを欠いています)、しかしファイルを追跡する基本的なタスクのためにするでしょう。

  • GnuWin32 tail はバグが多いです( αβγ )。

  • UnxUtils tail はより良いように見えます(-fは機能しますが、--pidはそうではない、-nはそうではありませんが--lines = nは-fで失敗します)が、死んだプロジェクトのようです。

  • Cygwin は非常に醜いもので、おそらくDLLや coreutilsパッケージ を使うことができます - しかしネイティブのwin32プロセスでは動作しない--pidのような問題がまだあります。

22
gz.

バッチコマンドを使用したDOS CMDの末尾(下記参照)。 それは完璧ではない、そして時々繰り返す。 使用法:tail.bat -d tail.bat -f -f.

__コード__.

@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem tail.bat -d <lines> <file>
rem tail.bat -f <file>

rem ****** MAIN ******
IF "%1"=="-d" GOTO displayfile
IF "%1"=="-f" GOTO followfile

GOTO end

rem ************
rem Show Last n lines of file
rem ************

:displayfile
SET skiplines=%2
SET sourcefile=%3

rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)

rem *** Calculate the lines to skip
SET /A skiplines=%find_lc%-!skiplines!

rem *** Display to screen line needed
more +%skiplines% %sourcefile%

GOTO end

rem ************
rem Show Last n lines of file & follow output
rem ************

:followfile
SET skiplines=0
SET findend_lc=0
SET sourcefile=%2

:followloop
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET findend_lc=%%l)

rem *** Calculate the lines to skip
SET /A skiplines=%findend_lc%-%find_lc%
SET /A skiplines=%find_lc%-%skiplines%

rem *** Display to screen line when file updated
more +%skiplines% %sourcefile%

goto followloop

:end
22
formatguy

Tail For Windows を使った。確かに使うほどエレガントではない

18
Jake

Log Expert ここの回答のどこにも見たことがありません。

これはカスタマイズ可能で、ログファイルを巡回するのに非常に適しています。これまでのところ、これは私にとって最高のWindowsグラフィカルログビューアです。

15
Grzegorz Gralak

何もインストールしたくないのであれば、標準のWindowsコマンドから仕事をする「自分の」バッチファイルを作成することができます。これを行う方法についていくつかのポインタがあります。

1)find/c/v "" yourinput.fileを使用して、入力ファイルの行数を取得します。出力は次のようになります。

---------- T.TXT: 15

2)for/fを使用して、この出力を解析して数値15を取得します。

3)set/aを使用して、スキップする必要があるヘッド行の数を計算します

4)for/f "skip = n"を使用して、先頭行をスキップし、末尾行をエコー/処理します。

時間があれば、そのようなバッチファイルを作成してここに投稿します。

12

Windows PowerShellでは、次のものを使用できます。

Get-Content <file> -Wait
10
OscarRyz

私は Mtail を最近使ったが、うまくいっているようだ。これは上記のbaretailのようなGUIタイプです。 enter image description here

6
Vijay

UNIX用のWindowsサービス を試してください。シェルだけでなく、awk、sedなども提供します。

6
Dave

Microsoft 自体からWindows Server 2003 Resource Kit Toolsの一部であるtailコマンドをダウンロードしてください。

5
ismail

他の選択肢は _ msys _ をインストールすることです(これはCygwinよりも軽量です)。

4
Dirk Vollmar

TailMeは1つのウィンドウで同時に複数のログファイルを見ることができるのでTailMeを好みます。 http://www.dschensky.de/Software/Staff/tailme_en.htm

4
B.E.

tail コマンドおよび他の多くのものが Windows Resource Kit Tools パッケージで利用可能です。

4
ucfjeff

DOS 持っています no tailコマンド。 GNU tailおよびその他のGNU tools ここ 用のWindowsバイナリをダウンロードできます。

4
Tomer Gabel

DOSのtypeは* nuxのcatのように動作しますが、catのようにファイル全体をダンプしますので、本当のtailではありませんが、本当のtailの代わりにダウンロード/インストールしなくても利用できます。

4
Uberfuzzy

この小さなバッチスクリプトを書きました。 Unixの "tail"ほど洗練されたものではありませんが、出力をファイルの最後の10行に制限するなど、誰かがそれを追加して改善することができればいいのですが。 〜[at]〜gmail.comを盗み見てください。

@echo off

:: This is a batch script I wrote to mimic the 'tail' UNIX command.
:: It is far from perfect, but I am posting it in the hopes that it will
:: be improved by other people. This was designed to work on Windows 7.
:: I have not tested it on any other versions of Windows

if "%1" == "" goto noarg
if "%1" == "/?" goto help
if "%1" == "-?" goto help
if NOT EXIST %1 goto notfound
set taildelay=%2
if "%taildelay%"=="" set taildelay=1

:loop
cls
type %1

:: I use the CHOICE command to create a delay in batch.

CHOICE /C YN /D Y /N /T %taildelay%
goto loop

:: Error handlers

:noarg
echo No arguments given. Try /? for help.
goto die

:notfound
echo The file '%1' could not be found.
goto die

:: Help text

:help
echo TAIL filename [seconds]

:: I use the call more pipe as a way to insert blank lines since echo. doesnt
:: seem to work on Windows 7

call | more
echo Description:
echo     This is a Windows version of the UNIX 'tail' command.
echo     Written completely from scratch by Andrey G.
call | more
echo Parameters:
echo    filename             The name of the file to display
call | more
echo    [seconds]            The number of seconds to delay before reloading the
echo                         file and displaying it again. Default is set to 1
call | more
echo ú  /?                   Displays this help message
call | more
echo    NOTE:
echo    To exit while TAIL is running, press CTRL+C.
call | more
echo Example:
echo    TAIL foo 5
call | more
echo    Will display the contents of the file 'foo',
echo    refreshing every 5 seconds.
call | more

:: This is the end

:die
4
Andrey

Far Manager で、を押します F3 ファイルに標準ビューアを入力し、次に End ファイルの末尾に移動するためのキー。

ファイルが更新されると、Far Managerはそれを自動的にスクロールします。

3

Cygwinをインストールするのではなく、いくつかのUnixユーティリティのWin32ポートを使用したい場合は、 GNU Win32 用のユーティリティをお勧めします。

Cygwinよりも軽量で、よりポータブルです。

3
Grant Wagner

インストール MKS Toolkit ...これで、すべてのUnixコマンドをWindowsで実行できるようになります。

コマンドは以下のとおりです。

tail -f <file-name>  
3
user229580

私は Kiwi Log Viewerを使用しています 。それは無料です。

1
user615011

バッチファイルでtail関数のニーズを満たすユーティリティを見つけたと思います。それは "mtee"と呼ばれ、そしてそれは無料です。私は現在取り組んでいるバッチファイルにそれを組み込んでいます、そしてそれは仕事を非常にうまく行います。実行可能ファイルをPATHステートメントのディレクトリに配置するようにしてください。

これがリンクです:

mtee

0
user825233

WinTail も試すことができます。

辛抱強い

0
GJ.

グラフィカルログビューアは、ログファイルを表示するのに非常に適していますが、スクリプト(またはバッチファイル)に組み込むことができるコマンドラインユーティリティの必要性を満たしていません。多くの場合、そのような単純で汎用のコマンドは、特定の環境向けの特殊なソリューションの一部として使用できます。グラフィカルメソッドはそのような用途には向いていません。

0
user825233