IDL-创建目录中所有文件的mtimes数组

时间:2015-08-11 19:59:34

标签: arrays loops automation idl filemtime

所以我试图创建一个程序来搜索目录中最近更新的文件。 我最初的希望是像

这样的命令
file_array = FILE_INFO(file_path+'\*.dat')

将创建目录中所有文件的数组,然后

edit_time = file_array.mtime

会给我一个包含所有mtimes的数组,从中可以获得最大mtime,也就是最近更新的文件。据我所知,FILE_INFO(和FSTAT)似乎无法同时处理多个文件。

该程序应该是一个自动程序,随着数据被推送到计算机上,文件会不断更新和添加。因此,在比父目录更具体的任何内容中进行硬编码都不是一个可行的解决方案。

所以我需要的是可以处理多个文件的FILE_INFO的替代方法,或者可以在不知道文件名的情况下查看每个文件的循环过程。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

function mg_newest_file, dirname, _extra=e
  compile_opt strictarr

  files = file_search(filepath('*', root=dirname), count=nfiles, _extra=e)
  info = replicate(file_info(files[0]), nfiles)
  for i = 0L, nfiles - 1L do begin
    info[i] = file_info(files[i])
  endfor

  ind = sort(info.mtime)
  return, files[ind[-1]]
end

像这样调用它来查找给定目录中的最新常规文件:

IDL> print, mg_newest_file('/Users/mgalloy/projects/mglib', /test_regular)
/Users/mgalloy/projects/mglib/homebrew_configure.sh

根据您的工作,FOLDERWATCH(在IDL 8.4中引入)可能对您有用。