bash重命名计数器循环

时间:2014-04-15 10:00:25

标签: bash loops rename counter

我怎么能在循环中做到这一点?

我需要在cron-tab中放置一个小脚本,它将获取实际日志并将它们放在log-1文件中。将log-1文件重命名为log-2文件... Bassicaly我需要有一周的日志文件,按log-1到log-7日志排序,其中log-7是7天前的日志,每天更新。

Bassicaly我在一个小循环中需要这个并且语法有问题:

mv log-6 log-7
mv log-5 log-6
mv log-4 log-5
mv log-3 log-4
mv log-2 log-3
mv log-1 log-2
mv logactual log-1

3 个答案:

答案 0 :(得分:0)

你可以这样做:

for ((i=7; i>=2; i--)); do mv "log-$((i-1))" "log-$i"; done; mv logactual log-1
mv log-6 log-7
mv log-5 log-6
mv log-4 log-5
mv log-3 log-4
mv log-2 log-3
mv log-1 log-2
mv logactual log-1

答案 1 :(得分:0)

虽然我同意你的问题显示缺乏努力,但我无法抗拒挑战。 ;)

for file in log-*
do
    lognr=$(echo $file | sed "s/log-\(\d*\)/\1/")
    mv "$file" "log-$(expr $lognr + 1)"
done
mv logactual log-1

答案 2 :(得分:0)

感谢您的回答,由于缺乏努力,我有:

COUNTER=7
until [  $COUNTER -gt 0 ]; do
mv log-($COUNTER -1) log-$COUNTER
let COUNTER-=1
done

不知道怎么做那个日志 - ($ COUNTER -1)并且在搜索时遇到了麻烦