【发布时间】:2009-08-14 04:25:50
【问题描述】:
我有过去 7 天的文件列表。从这个列表中,如果某一天有多个文件,我需要使用 KornShell (ksh) 脚本获取当天的最新文件。
【问题讨论】:
我有过去 7 天的文件列表。从这个列表中,如果某一天有多个文件,我需要使用 KornShell (ksh) 脚本获取当天的最新文件。
【问题讨论】:
类似的东西:
newest=""
for f in $filelist ; do
if [ "$f" -nt "$newest" ] ; then
newest="$f"
fi
done
【讨论】:
您可以使用以下脚本:
ls -lt | egrep '^([^ ]+ +){5}Feb +3 +2009' |头 -n 1
但如果您使用的是 solaris,/bin/egrep 和 /usr/bin/egrep 不支持 { } 字符。我猜这种行为不符合标准。无论如何,在 Solaris 中,您可以使用:
ls -lt | /usr/xpg4/bin/egrep '^([^ ]+ +){5}Feb +3 +2009' |头-n 1 |头 -n 1
或
ls -lt | tr -s ' ' | egrep '^[^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ 2009 年 2 月 3 日' |头 -n 1
您也可以使用 ls 和 sed。但在 Solaris 中,我认为 sed 不支持扩展正则表达式。
当然,将 Feb +3 +2009 替换为您想要的日期。不要忘记空格后面的“+”。
【讨论】: