bash – 根据时间戳获取最新文件

栏目: 服务器 · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/3495609/get-the-newest-file-based-on-timestamp
我是 shell

脚本的新手,所以我需要一些帮助,需要如何处理这个问题.

我有一个目录,其中包含以下格式的文件.这些文件位于一个名为/ incoming / external / data的目标中

AA_20100806.dat
AA_20100807.dat
AA_20100808.dat
AA_20100809.dat
AA_20100810.dat
AA_20100811.dat
AA_20100812.dat

如您所见,文件的文件名包含时间戳.即[RANGE] _ [YYYYMMDD] .dat

我需要做的是使用文件名中的时间戳而不是系统时间戳找出哪些文件具有最新日期,并将文件名存储在变量中并将其移动到另一个目录并将其余目录移动到另一个目录.

对于那些只想要答案的人来说,这里是:

ls | sort -n -t _ -k 2 | tail -1

这是我的思想过程.

我将假设[RANGE]部分可能是任何东西.

从我们所知道的开始.

>工作目录:/ incoming / external / data

>文件格式:[RANGE] _ [YYYYMMDD] .dat

我们需要在目录中找到最新的[YYYYMMDD]文​​件,我们需要存储该文件名.

可用的工具(我只列出了这个问题的相关工具……通过练习识别它们变得更容易):

> ls

> sed

> awk (or nawk)

> sort

> tail

我想我们不需要sed,因为我们可以使用ls命令的整个输出.使用ls,awk,sort和tail我们可以像这样得到正确的文件(请记住,你必须检查你的操作系统将接受的语法):

NEWESTFILE=`ls | awk -F_ '{print $1 $2}' | sort -n -k 2,2 | tail -1`

然后,只需将下划线放回去,这应该不会太难.

编辑:我有一点时间,所以我开始修复命令,至少在Solaris中使用.

这是复杂的第一遍(假设目录中的所有文件格式相同:[RANGE] _ [yyyymmdd] .dat).我认为有更好的方法可以做到这一点,但这适用于我自己的测试数据(事实上,我刚刚发现了一种更好的方法;见下文):

ls | awk -F_ '{print $1 " " $2}' | sort -n -k 2 | tail -1 | sed 's/ /_/'

…写这篇文章时,我发现你可以这样做:

ls | sort -n -t _ -k 2 | tail -1

我会把它分解成几部分.

ls

足够简单……获取目录列表,只是文件名.现在我可以将其输入下一个命令.

awk -F_ '{print $1 " " $2}'

这是AWK命令.它允许您采用输入行并以特定方式对其进行修改.在这里,我正在做的是指定awk应该在有下划线(_)的任何地方断开输入.我使用-F选项执行此操作.这给了我每个文件名的两半.然后告诉awk输出上半部分($1),然后输出一个空格(“”)

接下来是下半场(2美元).请注意,空间是我最初建议中缺少的部分.此外,这是不必要的,因为您可以在下面的sort命令中指定分隔符.

现在输出被分成每行的[RANGE] [yyyymmdd] .dat.现在我们可以对此进行排序

sort -n -k 2

这将获取输入并根据第二个字段对其进行排序. sort命令默认使用空格作为分隔符.在编写此更新时,我找到了sort文档,它允许您指定分隔符,因此不需要AWK和SED.拿下ls并通过以下方式管道:

sort -n -t _ -k 2

这实现了相同的结果.现在你只想要最后一个文件,所以:

tail -1

如果你使用awk来分隔文件(这只是增加额外的复杂性,所以不要羞怯),你可以用sed用下划线替换空格:

sed 's/ /_/'

这里有一些很好的信息,但我相信大多数人都不会像这样读到底部.

翻译自:https://stackoverflow.com/questions/3495609/get-the-newest-file-based-on-timestamp


以上所述就是小编给大家介绍的《bash – 根据时间戳获取最新文件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript

JavaScript

Douglas Crockford / Yahoo Press / 2008-5 / GBP 23.99

Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative b......一起来看看 《JavaScript》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码