我有扩展名为数字的文件:
backup.1 backup.2 backup.3
我现在需要检查最高数字是什么,并将此数字保存到变量中。 (在上面的情况下,它将是i = 3)
答案 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