1

所以我正在尝试创建一个程序来搜索目录中最近更新的文件。我最初的希望是这样的命令

file_array = FILE_INFO(file_path+'\*.dat')

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

edit_time = file_array.mtime

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

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

所以我需要的是一个FILE_INFO可以处理多个文件的替代方法,或者一个可以遍历目录的循环过程,查看每个文件,而无需先知道文件名。

4

1 回答 1

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 中引入)可能对您有用。

于 2015-08-12T17:07:50.633 回答