获取 shell 中具有YYYYMMDD_HHMMSS.csv.gz格式的最新文件



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

使用findsort

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

sort命令的选项-t用于分隔符,-k用于选择执行排序的键。

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

如果文件也有相应的修改时间(由 ls -l 显示(,那么您可以按修改时间以相反的顺序列出它们并获取最后一个

ls -1rt | tail -1

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

最新更新