我必须查看一个大文件(典型大小为500MB-2GB)的最后几行。我正在寻找一个相当于Unix命令尾Windows Powershell。一些可供选择的方法是,

http://tailforwin32.sourceforge.net/

and

Get-Content [filename] | Select-Object -Last 10

对于我来说,第一种选择是不允许使用的,而第二种选择是很慢的。有人知道PowerShell的tail的有效实现吗?


当前回答

非常基本,但不需要任何附加模块或PS版本要求:

while ($true){清除主机;gc E:\test.txt | select -last 3;睡眠2}

其他回答

对于那些以“打字越少越好”为原则的管理员来说,下面是我能找到的最短版本:

gc filename -wai -ta 10

只是对之前答案的补充。Get-Content定义了别名,例如,如果您习惯UNIX,您可能喜欢cat,还有type和gc。所以与其

Get-Content -Path <Path> -Wait -Tail 10

你可以写

# Print whole file and wait for appended lines and print them
cat <Path> -Wait
# Print last 10 lines and wait for appended lines and print them
cat <Path> -Tail 10 -Wait

对Get-Content使用-wait参数,它将显示添加到文件中的行。这个特性在PowerShell v1中就有了,但是由于某种原因在v2中没有很好地记录。

这里有一个例子

Get-Content -Path "C:\scripts\test.txt" -Wait

运行此命令后,更新并保存该文件,您将在控制台上看到更改。

我使用了这里给出的一些答案,但只是提醒一下

Get-Content -Path Yourfile.log -Tail 30 -Wait 

会在一段时间后咀嚼记忆。一个同事在过去的一天里留下了这样一个“尾巴”,它高达800 MB。我不知道Unix尾巴是否也有同样的行为(但我怀疑)。所以短期使用是可以的,但要小心。

也许现在回答已经太迟了,但是试试这个

Get-Content <filename> -tail <number of items wanted> -wait