我正在使用|排序读取订购的文件。但是当我做的时候
files=($(find /test/ | sort))
在目录/ test上,我以不同的顺序获取文件名。
ls -lhtr
如何以与ls -lhtr相同的方式获取文件名?我想首先阅读最新的文件名..
答案 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
提供的顺序相反,后者列出了最新的文件。