Shell:按文件名获取最新文件列表

时间:2011-11-11 11:59:59

标签: shell

我有像

这样的文件
update-1.0.1.patch
update-1.0.2.patch
update-1.0.3.patch
update-1.0.4.patch
update-1.0.5.patch

我有一个包含最后一个应用路径的变量(例如update-1.0.3.patch)。所以,现在我必须得到一个要应用的文件列表(在示例更新1.0.4和1.0.5中)。我怎么能得到这样的名单?

为了澄清,我需要一种方法来获取以字母顺序排列给定文件的文件列表,这个文件列表也必须按字母顺序排列(显然不可能总是应用补丁1.0.5 1.0.4之前。

1 个答案:

答案 0 :(得分:2)

sed是打印行范围的首选。你给它一个开始/结束地址或模式和命令来做。

ls update-1.0.* | sort | sed -ne "/$ENVVAR/,// p"

排序可能不是必需的,因为ls可以按名称排序,但为了表明必要性,可以将其作为礼貌包含在维护者中。 -n表示“不自动打印每一行”,-e表示“我在命令行给你一个脚本”。我使用“将脚本封装到$ENVVAR将被评估。结束地址为空(//),p表示”打印行“。

哦,我刚注意到你以后只想要那些。可能有一种方法可以告诉sed在您的地址之后开始上线,但我会通过tail -n +2将其传送到第二行开始。