在目录中我有以下文件:
000 - text.txt
000 - info.txt
001 - first.txt
002 - second.txt
aaa - more.txt
ZZZ - text.txt
ZZZ - info.txt
在 Bash 中,如何获取下一个数字(即 003)?
我想忽略“aaa - *”、“aab - *”、“ZZZ - *”等。
目前,我正在循环遍历所有文件并使用\d\d\d
所有文件来匹配最高数字
伪代码:
min = 000
for each file in directory
if match \d\d\d > min
max = match \d\d\d
printf %03d $((max + 1))
我确信有更有效的方法(例如,也许使用 ls 或类似方法)。
答案1
你可以这样做:
# loop over files that start with 3 digits
# the shell will naturally order them, the last will be the max
for last in [0-9][0-9][0-9]*; do :; done
# strip the first space and everything after it
num=${last%% *}
# get the next number
((next = num + 1))
# pad with zeros
printf "%03d" $next