basename.ps1
#!/usr/bin/env pwsh $ErrorActionPreference = "Stop" Set-StrictMode -Version Latest # See: https://www.gnu.org/software/coreutils/manual/html_node/basename-invocation.html function basename { param( [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)] [string[]] $Name, [Parameter(Mandatory=$false, Position=1)] [string] $Suffix = $null ) if ($Suffix) { $Name | ForEach-Object { $_.TrimEnd($Suffix) } } else { $Name | ForEach-Object { $_.TrimEnd([System.IO.Path]::GetExtension($_)) } } } |