Answers:
你可以使用logrotate有一些限制。
创建一个rotatemap.conf
:
/path/to/map.jpg {
rotate 9
}
然后从你的cronjob运行logrotate,如下所示:
logrotate -f -s /path.to/rotatemap.state /path/to/rotatemap.conf
这会将文件重命名map.jpg
为map.jpg.1
,map.jpg.9
如果存在,将删除旧文件。
限制:
阅读logrotate(man logrotate
)的精细手册以获取更多信息。
rotatemap.state
?
myrotate() {
# usage: myrotate /path/to/map-0.jpg
local dest=$1
local dest_dir=$(dirname "$dest")
local dest_prefix=$(basename "${dest%-*}")
local dest_ext=${dest##*.}
local n
printf "%s\n" "$dest_dir/${dest_prefix}"-*."$dest_ext" |
sort -V -r |
while IFS= read -r file; do
n=${file##*-}
n=${n%.*}
echo mv "$file" "$dest_dir/${dest_prefix}-$((n+1)).$dest_ext"
done
}
如果您对它的工作满意,请将“echo mv”更改为“mv”。
我错过了你只想保留的位置9.这里有一些简洁的bash:
for i in {8..0}; do mv map-$i.jpg map-$((i+1)).jpg; done
mv $file map-0.jpg