PowerShell有没有比自定义方案更简洁的内置方法实现ls -t | head的效果
回答
内置简洁方案
PowerShell没有自带完全匹配ls -t | head的单命令内置方案,但可以用内置别名和参数缩写实现极短的纯原生调用,无需自定义任何配置:
最短原生写法(功能完全匹配需求,最新修改的文件排在最前,默认取15条可自行调整数字):
gci | sort LastWriteTime -Desc | select -F 15
用到的内置缩写说明:
gci是Get-ChildItem的官方内置别名sort是Sort-Object的官方内置别名select是Select-Object的官方内置别名-Desc是-Descending的合法参数缩写,-F是-First的合法参数缩写,PowerShell允许无歧义的参数缩写,交互式场景下可正常使用
行业推荐最佳实践
- 你当前把自定义函数写入
$PROFILE并绑定别名的做法是业内通用的标准方案,没有问题,可进一步优化函数增强灵活性:
优化后支持灵活调用:function Get-RecentItem { param( [Parameter(Position=0)] [int]$Count = 15, [Parameter(Position=1)] [string]$Path = ".", [datetime]$Since ) $items = Get-ChildItem -Path $Path if ($PSBoundParameters.ContainsKey('Since')) { $items = $items | Where-Object { $_.LastWriteTime -gt $Since } } $items | Sort-Object LastWriteTime -Descending | Select-Object -First $Count } # 绑定你习惯的别名 Set-Alias lst Get-RecentItem Set-Alias ls-t Get-RecentItem- 直接输入
lst查看当前目录最近15条修改的文件 - 输入
lst 20查看最近20条 - 输入
lst 10 C:\Code查看指定目录最近10条 - 输入
lst -Since (Get-Date).AddDays(-1)查看最近24小时修改的所有文件
- 直接输入
- 别名仅推荐在交互式终端场景使用,编写可共享的PowerShell脚本时,必须使用完整命令名和参数名,避免不同环境的别名配置差异导致脚本运行异常,同时提升代码可读性。
- 如果是团队统一使用的场景,可以把常用的这类工具函数封装成PowerShell模块,统一分发部署,避免每个人重复配置。
内容的提问来源于stack exchange,提问作者dharmatech
相关产品推荐
相关产品推荐

