【问题标题】:Unix process file with latest timstamp具有最新时间戳的 Unix 进程文件
【发布时间】:2013-04-23 00:05:17
【问题描述】:

我正在制作一个将数据加载到表中的程序。我已经创建了程序。 但是我在处理文件时遇到了问题,因为目录中有多个文件具有不同的时间戳。

我想问一下检测提要最新时间戳并选择那个的代码是什么。

例如,Feed 的名称是 PRODUCTS_I03_20130429.dat 其中“PRODUCTS_I03”只是提要的名称。

我只想通过时间戳检测最新的提要。

提前感谢您!

【问题讨论】:

  • 你好,它在 shell script.thanks
  • 阅读命令findcutsort

标签: file unix feed timestamp


【解决方案1】:

你可以这样:

$ 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 获取(最后修改)时间戳的真实日期。

【讨论】:

    【解决方案2】:

    如果您使用的是 shell 脚本或命令行,请尝试“ls -t”,或者如果您希望它们以相反的顺序使用,请使用“ls -tr”

    【讨论】:

      【解决方案3】:
       ls *.dat | python -c "import sys,re; print sorted(sys.stdin, key = lambda x: re.search( r'(\d+)\.dat', x).group(1))[-1]"
      

      【讨论】:

      • 你好。这在shell脚本中可能吗?我不熟悉您使用的语言。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2017-12-16
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多