You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Shell中获取第二新修改的文件名?

获取第二新修改文件的简洁方法

你可以用更简洁的管道组合实现,无需用到tac:

ls -tr | tail -2 | head -1

逻辑很直接:ls -tr按修改时间从旧到新列出文件,tail -2提取最后两个(最新和第二新的文件),再用head -1取第一个结果,就是你要的第二新文件。

如果想减少管道调用次数,用awk一步完成更高效:

ls -tr | awk '{prev = $0} END {print prev}'

awk会遍历每一行内容,把当前行暂存到prev变量,到遍历结束的END阶段时,prev保存的就是倒数第二行的内容——也就是第二新的文件名。

补充说明:如果你的文件名包含换行符(这种场景极少),ls的纯文本输出会出现异常,这种情况建议用find结合stat处理,但日常普通场景下上面的方法完全够用。

内容的提问来源于stack exchange,提问作者SirLouen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:34:53