sed shell 修改源文件_shell – 更改文件名后缀(使用sed?)

如果您要翻转日志文件,并且根据您需要获得的复杂程度,我之前使用过以下段:

#!/usr/bin/bash

# rollover.sh

# Rolls over log files in the current directory.

# *.log.8 -> *.log.9

# *.log.7 -> *.log.8

# : : :

# *.log.1 -> *.log.2

# *.log -> *.log.1

shft() {

# Change this '8' to one less than your desired maximum rollover file.

# Must be in reverse order for renames to work (n..1, not 1..n).

for suff in {8..1} ; do

if [[ -f "$1.${suff}" ]] ; then

((nxt = suff + 1))

echo Moving "$1.${suff}" to "$1.${nxt}"

mv -f "$1.${suff}" "$1.${nxt}"

fi

done

echo Moving "$1" to "$1.1"

mv -f "$1" "$1.1"

}

for fspec in *.log ; do

shft "${fspec}"

#date >"${fspec}" #DEBUG code

done

这将自动将日志文件翻转到版本9,尽管您只需更改for循环以允许更多.

添加了DEBUG以便自动创建新文件以进行测试,以下脚本显示了它的运行情况:

pax> touch qq.log ; ./rollover.sh

Moving "qq.log" to "qq.log.1"

pax> touch "has spaces.log" ; ./rollover.sh

Moving "has spaces.log" to "has spaces.log.1"

Moving "qq.log.1" to "qq.log.2"

Moving "qq.log" to "qq.log.1"

pax> ll *log*

-rw-r--r-- 1 pax None 30 2010-09-11 20:39 has spaces.log

-rw-r--r-- 1 pax None 0 2010-09-11 20:39 has spaces.log.1

-rw-r--r-- 1 pax None 30 2010-09-11 20:39 qq.log

-rw-r--r-- 1 pax None 30 2010-09-11 20:38 qq.log.1

-rw-r--r-- 1 pax None 0 2010-09-11 20:38 qq.log.2

这个脚本的好处在于,它可以轻松配置以处理大量历史记录(通过更改{8..1}位),使用空格处理名称,并在日志文件丢失时相对健壮地处理间隙.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值