将最高文件扩展名保存到变量



我有扩展名是数字的文件:

备份。1 备份。2 备份.3

我现在需要检查最高数字是多少并将此数字保存到变量中。(在上面的情况下,它将是 i=3)

这些问题在 bash 中实际上相当简单。Bash 提供了带有子字符串删除的参数扩展,可以轻松地从文件名中获取最终数字。它具有形式${var##*.},它只是从字符串的左侧搜索到最后一次出现'.'删除所有字符,直到包括点,例如

var=backup.1
echo ${var##*.}
1

因此,您需要做的就是遍历与backup.[0-9]*匹配的所有文件,并保留一个保存最大可见数字的max变量,例如

max=0
for i in backup.[0-9]*; do 
[ "${i##*.}" -gt $max ] && max="${i##*.}"
done
echo "max: $max"

根据您的文件输出,

max: 3

仔细查看,如果您有其他问题,请告诉我。

highest=$(ls backup* | sort -t"." -k2 -n | tail -n1 | sed -r 's/.*.(.*)/1/')

我的文件:

backup.1
backup.2
backup.3
backup.4
backup.5
backup.6
backup.7
backup.8
backup.9
backup.10

输出:

echo "${highest}"
10

最新更新