Unix tail equivalent command in Windows Powershell

后端 未结 13 1724
攒了一身酷
攒了一身酷 2020-11-28 00:13

I have to look at the last few lines of a large file (typical size is 500MB-2GB). I am looking for a equivalent of Unix command tail for Windows Powershell. A f

13条回答
  •  生来不讨喜
    2020-11-28 00:47

    There have been many valid answers, however, none of them has the same syntax as tail in linux. The following function can be stored in your $Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 for persistency (see powershell profiles documentation for more details).

    This allows you to call...

    tail server.log
    tail -n 5 server.log
    tail -f server.log
    tail -Follow -Lines 5 -Path server.log
    

    which comes quite close to the linux syntax.

    function tail {
    <#
        .SYNOPSIS
            Get the last n lines of a text file.
        .PARAMETER Follow
            output appended data as the file grows
        .PARAMETER Lines
            output the last N lines (default: 10)
        .PARAMETER Path
            path to the text file
        .INPUTS
            System.Int
            IO.FileInfo
        .OUTPUTS
            System.String
        .EXAMPLE
            PS> tail c:\server.log
        .EXAMPLE
            PS> tail -f -n 20 c:\server.log
    #>
        [CmdletBinding()]
        [OutputType('System.String')]
        Param(
            [Alias("f")]
            [parameter(Mandatory=$false)]
            [switch]$Follow,
    
            [Alias("n")]
            [parameter(Mandatory=$false)]
            [Int]$Lines = 10,
    
            [parameter(Mandatory=$true, Position=5)]
            [ValidateNotNullOrEmpty()]
            [IO.FileInfo]$Path
        )
        if ($Follow)
        {
            Get-Content -Path $Path -Tail $Lines -Wait
        }
        else
        {
            Get-Content -Path $Path -Tail $Lines
        }
    }
    

提交回复
热议问题