我正在寻找与Unix“ tail”命令等效的命令,该命令可使我在写入日志文件时监视其日志输出。
我正在寻找与Unix“ tail”命令等效的命令,该命令可使我在写入日志文件时监视其日志输出。
Answers:
我建议为Win32安装类似GNU Utilities的工具。它具有最喜欢的食物,包括尾巴。
tail
在2GB的文件上使用GNU的文件,但它被阻塞了。 more
工作正常(至少查看文件的开头)。
head
但是不能tail
。
tail
:)
如果您使用PowerShell,则可以使用:
Get-Content filenamehere -Wait -Tail 30
从下方发布Stefan的评论,这样人们就不会错过
PowerShell 3引入了-Tail参数,仅包括最后x行
tail
有用)(2)它不像我想要的那样动态(可能是由于我的设置与其他张贴者之间的OS /文件系统发生了变化) ?)。也就是说,我确定Get-Content
有时所做的外壳程序直到dir
在另一个外壳程序中运行后才会更新。
Get-Content -Tail 100 -Wait .\logfile.log
吗?
使用批处理命令对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
ping 127.0.0.1 -n 2 > nul
在之前添加了此行goto followloop
。它会发送两次ping,并在1秒之间等待1秒。:D
timeout /t 2
?
有很多选项,但是所有选项都具有更高级功能的缺陷。
尾部的GnuWin32是越野车(α β γ) -比如-f只是简单的不工作。
UnxUtils的尾部似乎更好(-f可以工作,但--pid似乎不行,-n但--lines = n不能使-f失败),但似乎是一个无效的项目。
Cygwin是一个非常丑陋的应用程序,可能只使用DLL和coreutils软件包 -但仍然存在--pid之类的问题,无法与本机win32进程一起使用。
我用过Windows的Tail。当然不如使用优雅
尾巴但是然后,您正在使用Windows。;)
使用Windows PowerShell,您可以使用:
Get-Content <file> -Wait
在这里的答案中,我还没有看到Log Expert。
它是可定制的,非常适合处理日志文件。到目前为止,对我来说,它是最好的Windows图形日志查看器。
不幸的是,该软件不再可用。您可以在archive.org上阅读有关它的信息。
如果您根本不想安装任何东西,则可以“构建自己的”批处理文件,该文件可以通过标准Windows命令执行此工作。这里有一些有关如何做的指示。
1)使用find / c / v“” yourinput.file,获取输入文件中的行数。输出类似于:
---------- T.TXT: 15
2)使用/ f,解析此输出以获取数字15。
3)使用set / a,计算需要跳过的标题行数
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
尝试 Windows Services for UNIX。提供贝壳,awk,sed等以及尾巴。
更新 -:不幸的是,自2019年起,该系统不再在Microsoft下载中心提供。
我只是写了这个小批处理脚本。它不像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
echo.
以单词上的尾随点的方式调用该命令(而不是作为单独的参数),它将打印一行新行。
如果要使用某些Unix实用程序的Win32端口(而不是安装Cygwin),则建议将GNU实用程序用于Win32。
比Cygwin轻巧,更轻便。
在Far Manager中,按F3一个文件以进入标准查看器,然后按End按键导航到文件末尾。
如果文件已更新,则Far Manager会自动滚动它。
图形化日志查看器虽然非常适合查看日志文件,但不能满足可用于脚本(或批处理文件)的命令行实用程序的需求。通常,这种简单通用的命令可用作特定环境的专用解决方案的一部分。图形方法不能轻易地用于这种用途。