Search code examples
macosbashbsd

Mac unix script: given a list of file paths, find the one with latest modified date?


If I have a list of file names (absolute path), how do I determine which one is last modified in command line?

Thanks!


Solution

  • For OS X's stat:

    tr \\n \\0<files.txt|xargs -0 stat -f'%m %N'|sort -rn|head -n1
    

    Use -c'%Y %n' with GNU stat.

    Different ways to find files sorted by modification date:

    find . -type f -exec stat -f'%m %N' {} +|sort -rn|cut -d' ' -f2-
      for OS X's stat; use -c'%Y %n' with GNU stat
    gfind -type f -printf '%T@ %p\n'|sort -rn|cut -d' ' -f2-
      %T@ is absolute modification time and %p is pathname
    zsh -o dotglob -c 'printf %s\\n **/*(.om)'
      . is a qualifier for regular files
      om orders files by modification time