你的想法不远。我劝你不要
cd
进入最新的dre,只需使用相同的方案通过附加
latest_folder/
用你的命令替换。
一旦你有了
latest_file
,您只需使用
去掉子串的参数展开
分离前导的3位数字(例如
filenum="${latest_file%%.*}"
)中。之后,您就可以根据
filenum
是的。
如果确实需要创建新目录,则可以使用
printf -v
利用“场宽度”修改器和
'0'
填充以格式化
new_folder
名字A
002
只需添加
1
致
latest_folder
数字,例如
printf -v new_folder "%03d" $((latest_folder + 1))
注意:这是在从
最新文件夹
在添加时防止解释为八进制常数
1个
为了得到
新建文件夹
数字,例如
$((latest_folder + 1))
是的。
总而言之,你应该能够做一些类似的事情:
#!/bin/bash
limit=999
latest_folder="$(ls -td */ | head -n 1)"
latest_folder="${latest_folder:0:(-1)}"
latest_file="$(ls -t "$latest_folder/" | head -n 1)"
filenum="${latest_file%%.*}"
if ((filenum == limit)); then
n=0
while [ "${latest_folder:n:1}" = '0' ]; do
latest_folder="${latest_folder:$((n+1))}"
((n++))
done
printf -v new_folder "%03d" $((latest_folder + 1))
mkdir -p new_folder
fi
笔记
你通常应该使用
find
和
sort
获取目录和文件名列表(使用
-maxdepth
和
-type
控制搜索的文件/目录的深度和类型)
如果你有问题请告诉我。