在外壳中以YYYYMMDD_HHMMSS.csv.gz格式获取最新文件

时间:2018-08-23 23:45:07

标签: linux shell unix

1)我在shell的目录中有一组文件,我想根据文件名中的时间戳获取最新文件。
2)例如:
test1_20180823_121545.csv.gz
test2_20180822_191545.csv.gz
test3_20180823_192050.csv.gz
test4_20180823_100510.csv.gz
test4_20180823_191040.csv.gz
3) 从上面给定的文件中根据它们的时间和日期扩展名。我的输出应为test3_20180823_192050.csv.gz

2 个答案:

答案 0 :(得分:1)

使用findsort

find /path/to/mydirectory -type f | sort -t_ -k2,3 | tail -1

sort命令的选项是-t(用于分隔符)和-k(用于选择在其上进行排序的键)。

tail是从排序列表中获取最后一个条目。

答案 1 :(得分:0)

如果文件还具有相应的修改时间(如ls -l所示),则可以按相反的顺序列出文件的修改时间,并获取最后一个

    ls -1rt | tail -1

但是如果您不能依靠它,那么您需要编写脚本(例如perl)。您将获得文件列表到数组,然后将时间戳提取到其他数组,将时间戳转换为纪元时间(易于排序)到其他数组,同时对文件列表进行排序。也许哈希可以帮上忙。然后打印最后一个。 您可以尝试编写它,如果遇到问题,这里的人可以纠正您。