Home > Software engineering >  Glob path to get newest file only
Glob path to get newest file only

Time:10-06

Let's say I have a directory with product inventories that are saved per day:

$ ls *.csv
2014_01_01.csv
2014_01_02.csv
...

Is there a glob pattern that will only grab the newest file? Or do I need to chain it with other commands? Basically I'm just looking to do what would about to a LIMIT 1 based on the filename sort.

CodePudding user response:

Assuming your shell is bash, ksh93 or zsh, and your files have the same naming convention as the example in your question:

files=( *.csv )
printf "The newest file is %s\n" "${files[-1]}"

Since the date in the filenames is in a format that naturally sorts, storing all of them in an array and taking the last element gives you the newest one (And conversely the first element is the oldest one).

  • Related