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
答案 0 :(得分:1)
使用find
和sort
:
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)。您将获得文件列表到数组,然后将时间戳提取到其他数组,将时间戳转换为纪元时间(易于排序)到其他数组,同时对文件列表进行排序。也许哈希可以帮上忙。然后打印最后一个。 您可以尝试编写它,如果遇到问题,这里的人可以纠正您。