このブログエントリの続きです:
LUA で FlashAir の特定フォルダ内の最新ファイルを探す

↑この時の内容は、特定フォルダ「内」の最新ファイルを探す LUA スクリプトの紹介でしたが、ちょっとパワーアップして特定フォルダ「以下」の最新ファイルを探すようにしています。

特定フォルダ以下、といっても無限に探してくれるものではありません。実際のデジカメの挙動では、写真を撮影すると、"/DCIM/(どこかのディレクトリ)/***.jpg" みたいな感じで画像ファイルが格納されるらしいです。この「(どこかのディレクトリ)」という部分がメーカーによって変わったり、ある一定以上のファイルが1つのフォルダに貯まると別のディレクトリを作ったりして格納されるらしいのです(また聞き)。なので、この「(どこかのディレクトリ)」部分は最初に固定して考えるわけにはいかないが、これ以上の孫階層が作られるといったものでもない、ということだと思います。

で、その前提で「/DCIM 以下にある最新ファイルを探す」というスクリプトに作り変えてみました。要はサブフォルダが作られるとしたら1階層だけ作られて上で格納されるファイルの中で最新のものを探す、という内容に改良してみました、というものです:
last_fname = ""
last_fpath = ""
max_mod = 0
fpath = "/DCIM"  目的のフォルダ
for dirname in lfs.dir(fpath) do
  dirpath = fpath .. "/" .. dirname
  mod_dir = lfs.attributes( dirpath, "mode" )
  if mod_dir == "directory" then サブフォルダを再度調べる
    for filename in lfs.dir(dirpath) do
      filepath = dirpath .. "/" .. filename
      mod = lfs.attributes( filepath, "modification" )
      if mod > max_mod then
      max_mod = mod
        last_fname = filename
        last_fpath = filepath
      end
    end
  else fpath 直下にファイルがあった場合は対象にする
    mod = lfs.attributes( dirpath, "modification" )
    if mod > max_mod then
      max_mod = mod
      last_fname = dirname
      last_fpath = dirpath
    end
  end
end

   :
 (この時点で last_filepath に最新ファイルのパスが格納されている)
   :

これでかなり実用的になったはず。。