使用find读取最新的文件名

时间:2016-04-11 17:03:06

标签: unix find

我正在使用|排序读取订购的文件。但是当我做的时候

files=($(find /test/ | sort))

在目录/ test上,我以不同的顺序获取文件名。

ls -lhtr 

如何以与ls -lhtr相同的方式获取文件名?我想首先阅读最新的文件名..

1 个答案:

答案 0 :(得分:0)

将多条评论转移到答案中。

您必须安排以可排序的格式打印修改时间和名称(例如YYYY-mm-dd HH:MM:SS表示日期+时间,或者作为Unix时间戳 - 自1970年以来的秒数-01-01 00:00:00 +00:00)。对那些进行简单的排序会产生最新的最后一个顺序,因为ls -lhtr会给你。从GNU find调查-printf - 它可以适当地打印修改时间。

  

我正在使用find /test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -n,但我首先获得最旧的文件。我该怎么做才能获得最新的产品?

你的建议几乎看似合理,但你不想做数字排序。 ISO 8601格式使用常规排序进行日期排序。因此:

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort

应该有效,只要你没有名字中带换行符的文件,就可以先列出最旧的文件。

如果您想要最新的,则需要按相反的时间顺序排序,因此sort -r而不仅仅是sort

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -r

请注意,这与ls -lhtr提供的顺序相反,后者列出了最新的文件。