【发布时间】:2013-04-23 00:05:17
【问题描述】:
我正在制作一个将数据加载到表中的程序。我已经创建了程序。 但是我在处理文件时遇到了问题,因为目录中有多个文件具有不同的时间戳。
我想问一下检测提要最新时间戳并选择那个的代码是什么。
例如,Feed 的名称是 PRODUCTS_I03_20130429.dat 其中“PRODUCTS_I03”只是提要的名称。
我只想通过时间戳检测最新的提要。
提前感谢您!
【问题讨论】:
我正在制作一个将数据加载到表中的程序。我已经创建了程序。 但是我在处理文件时遇到了问题,因为目录中有多个文件具有不同的时间戳。
我想问一下检测提要最新时间戳并选择那个的代码是什么。
例如,Feed 的名称是 PRODUCTS_I03_20130429.dat 其中“PRODUCTS_I03”只是提要的名称。
我只想通过时间戳检测最新的提要。
提前感谢您!
【问题讨论】:
你可以这样:
$ latest=$(echo -e "PRODUCTS_I03_20130429.dat\nPRODUCTS_I03_20130428.dat"|sort -r -t"_" -k3|head -1)
$ echo ${latest%_*}
PRODUCTS_I03
只有在文件名中有两个_ 时才会起作用。 echo 仅用于测试。你应该用你想要检查的模式替换它,比如ls -1 PRODUCTS_*_*.dat。
如果时间戳与文件的日期相同,您可以使用以下内容:
$ latest=$(ls -1rt|head -1)
$ echo ${latest%_*}
或者您可以使用state -c %y $latest 获取(最后修改)时间戳的真实日期。
【讨论】:
如果您使用的是 shell 脚本或命令行,请尝试“ls -t”,或者如果您希望它们以相反的顺序使用,请使用“ls -tr”
【讨论】:
ls *.dat | python -c "import sys,re; print sorted(sys.stdin, key = lambda x: re.search( r'(\d+)\.dat', x).group(1))[-1]"
【讨论】: