If you have access to zsh
it's much easier than jumping though hoops with ls
, find
or stat
. For example, given
% ls -1 JenkinsBackup_*
JenkinsBackup_20170630-095544.tar.gz
JenkinsBackup_20170630-095545.tar.gz
JenkinsBackup_20170630-095546.tar.gz
JenkinsBackup_20170630-095547.tar.gz
JenkinsBackup_20170630-095548.tar.gz
JenkinsBackup_20170630-095549.tar.gz
JenkinsBackup_20170630-095550.tar.gz
JenkinsBackup_20170630-095551.tar.gz
JenkinsBackup_20170630-095552.tar.gz
JenkinsBackup_20170630-095553.tar.gz
JenkinsBackup_20170630-095554.tar.gz
JenkinsBackup_20170630-095555.tar.gz
JenkinsBackup_20170630-095556.tar.gz
JenkinsBackup_20170630-095557.tar.gz
JenkinsBackup_20170630-095558.tar.gz
List by modification time, newest first using the om
(order by modification time) glob qualifier:
% printf '%s\n' JenkinsBackup_*(om)
JenkinsBackup_20170630-095558.tar.gz
JenkinsBackup_20170630-095557.tar.gz
JenkinsBackup_20170630-095556.tar.gz
JenkinsBackup_20170630-095555.tar.gz
JenkinsBackup_20170630-095554.tar.gz
JenkinsBackup_20170630-095553.tar.gz
JenkinsBackup_20170630-095552.tar.gz
JenkinsBackup_20170630-095551.tar.gz
JenkinsBackup_20170630-095550.tar.gz
JenkinsBackup_20170630-095549.tar.gz
JenkinsBackup_20170630-095548.tar.gz
JenkinsBackup_20170630-095547.tar.gz
JenkinsBackup_20170630-095546.tar.gz
JenkinsBackup_20170630-095545.tar.gz
JenkinsBackup_20170630-095544.tar.gz
List by modification time, newest first, and select from the 11th up:
% printf '%s\n' JenkinsBackup_*(om[11,-1])
JenkinsBackup_20170630-095548.tar.gz
JenkinsBackup_20170630-095547.tar.gz
JenkinsBackup_20170630-095546.tar.gz
JenkinsBackup_20170630-095545.tar.gz
JenkinsBackup_20170630-095544.tar.gz
Delete matching files older than the 10th newest:
% rm -v JenkinsBackup_*(om[11,-1])
removed 'JenkinsBackup_20170630-095548.tar.gz'
removed 'JenkinsBackup_20170630-095547.tar.gz'
removed 'JenkinsBackup_20170630-095546.tar.gz'
removed 'JenkinsBackup_20170630-095545.tar.gz'
removed 'JenkinsBackup_20170630-095544.tar.gz'
See zsh: 14 Expansion: Filename Generation