shell – 更改文件名后缀(使用sed?)
发布时间:2020-12-15 21:37:43 所属栏目:安全 来源:网络整理
导读:我想从文件中更改文件名后缀(使用bash脚本),但有时会有一个句点和一些带有两个句点的文件. 现在我用这个: new_file=`echo ${file} | sed 's/(.*.log.*)'${suf}'/1.'${num}'/'` 其中’new_file’是新文件名,’file’是原始文件名,’${suf}’是文件的后缀
我想从文件中更改文件名后缀(使用bash脚本),但有时会有一个句点和一些带有两个句点的文件.
现在我用这个: new_file=`echo ${file} | sed 's/(.*.log.*)'${suf}'/1.'${num}'/'` 其中’new_file’是新文件名,’file’是原始文件名,’${suf}’是文件的后缀,${num}是新号码. 因此some.log必须成为some.log.1,some.log.1必须成为some.log.2.使用我的代码some.log成为some.log.1,但some.log.1仍然是some.log.1. 我希望我足够清楚.我很感激任何建议(甚至不使用sed). 更新: @paxdiablo.我认为测试出了问题. 现在我用这段代码作为测试; #!/usr/bin/bash shft() { for suff in {6..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" } clear folder=~/logs/*.log for i in {1..20}; do echo ${i}> ~/logs/some.log for fspec in ${folder} ; do shft "${fspec}" done done 现在每件事情都很好.对困惑感到抱歉. 解决方法
如果您要翻转日志文件,并且根据您需要获得的复杂程度,我之前使用过以下段:
#!/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}位),使用空格处理名称,并在日志文件丢失时相对健壮地处理间隙. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |