在Windows中相当于Unix的tail命令

我正在寻找Unix 'tail'命令的等效,这将允许我观察日志文件的输出,而它正在被写入。

598907 次浏览

你可以得到tail作为Cygwin的一部分。

我使用了Windows的Tail。当然不像使用

尾巴
那样优雅,但你使用的是Windows。,)

我建议安装类似用于Win32的GNU实用程序的东西。它有最喜欢的,包括尾巴。

如果你想使用某些Unix实用程序的Win32端口(而不是安装Cygwin),我建议使用Win32的GNU实用程序

重量比Cygwin轻,更轻便。

在Windows中,我一直使用Baretail来跟踪。它是免费的,而且很不错。

适用于UNIX的Windows服务试试。提供shell, awk, sed等以及尾部。

更新 -:不幸的是,截至2019年,该系统在微软下载中心不再可用。

如果你根本不想安装任何东西,你可以用标准的Windows命令“构建你自己的”批处理文件。这里有一些关于如何做到这一点的建议。

1)使用找到/c /v "" yourinput.file,获取输入文件中的行数。输出如下所示:

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

2)使用对楼,解析这个输出以得到数字15。

3)使用设置/,计算需要跳过的标题行数

4)使用对于/f "skip=n"跳过头行,回显/处理尾行。

如果我有时间,我将构建这样一个批处理文件,并将其发布回这里。

编辑:tail.bat

REM tail.bat
REM
REM Usage: tail.bat <file> <number-of-lines>
REM
REM Examples: tail.bat myfile.txt 10
REM           tail.bat "C:\My File\With\Spaces.txt" 10


@ECHO OFF
for /f "tokens=2-3 delims=:" %%f in ('find /c /v "" %1') do (
for %%F in (%%f %%g) do set nbLines=%%F )
set /a nbSkippedLines=%nbLines%-%2
for /f "usebackq skip=%nbSkippedLines% delims=" %%d in (%1) do echo %%d

有相当多的选择,但他们都有更高级的功能缺陷。

  • GnuWin32 tail is buggy (α β γ) -像-f这样的东西根本不起作用。

  • UnxUtils tail似乎更好(-f工作,但-pid似乎不是,-n但不是——lines=n失败与-f),但似乎是一个死项目。

  • Cygwin是一个大的丑陋的mush,可能只是使用DLL和coreutils包 -但仍然有问题,如——pid不与本机win32进程工作。

如果你使用PowerShell,那么这是有效的:

Get-Content filenamehere -Wait -Tail 30

把Stefan的评论贴在下面,这样大家就不会错过了

PowerShell 3引入了-Tail参数,只包含最后x行

我更喜欢TailMe,因为可以在一个窗口中同时查看几个日志文件:http://www.dschensky.de/Software/Staff/tailme_en.htm

微软本身下载tail命令,即Windows Server 2003 Resource Kit Tools的一部分。

DOS 无尾命令;你可以下载GNU tail和其他GNU工具在这里的Windows二进制文件。

DOS的type工作方式类似于*nux的cat,尽管就像cat一样,它会转储整个文件,所以它不是真正的tail,但它将在必要时可用,无需下载/安装真正的tail替代品。

另一种选择是安装MSYS(它比Cygwin更轻量级)。

使用Windows PowerShell,您可以使用:

Get-Content <file> -Wait

任何对使用批处理命令的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

安装MKS工具包……这样你就可以在Windows上运行所有的Unix命令。

命令如下:

tail -f <file-name>

你也可以试试WinTail

ََ

我最近使用了Mtail,它似乎工作得很好。这就是上面提到的像baretail一样的GUI类型。 enter image description here < / p >

我正在使用新西兰日志查看器。这是免费的。

我写了这个批处理脚本。它不像Unix的“尾巴”那么复杂,但希望有人可以添加它来改进它,比如将输出限制在文件的最后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

我在这里的答案中没有看到Log Expert。

它是可定制的,非常适合处理日志文件。到目前为止,它对我来说是最好的Windows图形日志查看器。

不幸的是,该软件已不再可用。你可以在archive.org上读到它。

图形化日志查看器虽然可能非常适合查看日志文件,但不能满足可以合并到脚本(或批处理文件)中的命令行实用程序的需求。通常,这样一个简单的通用命令可以作为特定环境的专门解决方案的一部分使用。图形化方法并不适合这种用途。

我想我已经找到了一个实用程序,可以满足批处理文件中尾函数的需求。它叫做“mtee”,是免费的。我已经把它合并到我正在处理的批处理文件中,它做得非常好。只要确保将可执行文件放到PATH语句中的一个目录中,就可以了。

这是链接:

< a href = " https://ritchielawrence.github。Io /mtee/" rel="nofollow noreferrer">mtee .

到经理中,按下文件上的F3进入标准查看器,然后按结束键导航到文件的末尾。

如果文件更新了,Far Manager将自动滚动它。

tail命令和许多其他命令在Windows资源包工具包中可用。