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

时间:2018-01-31 09:08:55

标签: bash

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

backup.1
backup.2
backup.3

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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