• Gyroplast@pawb.social
    link
    fedilink
    English
    arrow-up
    18
    ·
    11 hours ago

    Not what it implicitly advertises, unfortunately. It lists all files (ls) recursively in all subdirectories (-R), one per line with details (-l), sorted by time, newest first (-t). Only the first 10 files are shown (| head).

    The problem is that the files are sorted by time per directory, and ls recursively descents into subdirectories in that order. It’s not a “Depth First Search”, if you’re so inclined. Effectively, this shows the newest 10 files/dirs in the current directory before diving down, and if you have less files/dirs than that in your search base directory, you probably don’t need this hack to begin with.

    In good tradition, here’s something that actually works as likely intended. find recursively lists (only) all regular files (-type f) starting in the current directory (.) and runs the ls command (-exec) to show details (-l) of each file passed as arguments ({} +), including a specific, sortable time format (--time-style). The resulting comprehensive list of all files is then sorted in reverse (-r) order, using the sixth whitespace-separated column of each line/file as the key (-k6), which just so happens to be the “sortable time format”. Lastly, only the 10 most recent files are shown (| head), as before:

    find . -type f -exec ls -l --time-style=+"%Y-%m-%dT%T" {} + | sort -r -k6 | head

    Running this is a great way to start your day! It’ll give you ample time to brew some coffee or tea, slip into your most comfortable programmer socks, and finish lunch by the time it scanned your 18.3 TB of furry smut to show you what you “touched” last.

    It’ll likely be irrelevant cache files, though, if you run it from your $HOME. Excluding directories is left as an exercise for the reader.

    • palordrolap@fedia.io
      link
      fedilink
      arrow-up
      5
      ·
      9 hours ago

      Let me save you a few characters: %Y-%m-%d can be shortened to %F

      For visualisation’s sake I also like to put a space before the %F so that the year and the file size are separated a little more, but that’s more of a taste thing than anything else.

      (Caveat: %F’s year is explicitly four digits in some libraries, whereas %Y is always the full year. If you’re planning for your code to last 8000 years you might want to consider that.)