当前位置: 技术问答>linux和unix
shell问题,如何将一个目录中的带序号的所有a_xxx.tar.gz文件的序号向前滚动?
来源: 互联网 发布时间:2016-05-29
本文导语: 如何将一个目录中的带序号的所有a_xxx.tar.gz文件的序号向前滚动?原序号为1的则删除 即原来有这样一串文件: a_1.tar.gz a_2.tar.gz a_3.tar.gz 执行脚本后,将a_1.tar.gz删除,a_2.tar.gz重命名为a_1.tar.gz,a_3.tar.gz重命名为a_2.tar....
如何将一个目录中的带序号的所有a_xxx.tar.gz文件的序号向前滚动?原序号为1的则删除
即原来有这样一串文件:
a_1.tar.gz
a_2.tar.gz
a_3.tar.gz
执行脚本后,将a_1.tar.gz删除,a_2.tar.gz重命名为a_1.tar.gz,a_3.tar.gz重命名为a_2.tar.gz
另外说明:
我是在写一个日志压缩处理脚本,保证序号最大的是最新的;
如果保存的压缩包已经达到一定数量(999),就需要将第一个删除,其他的序号向前滚动,新来的压缩包序号命名为999.
shell还不太熟,请大家指点。
即原来有这样一串文件:
a_1.tar.gz
a_2.tar.gz
a_3.tar.gz
执行脚本后,将a_1.tar.gz删除,a_2.tar.gz重命名为a_1.tar.gz,a_3.tar.gz重命名为a_2.tar.gz
另外说明:
我是在写一个日志压缩处理脚本,保证序号最大的是最新的;
如果保存的压缩包已经达到一定数量(999),就需要将第一个删除,其他的序号向前滚动,新来的压缩包序号命名为999.
shell还不太熟,请大家指点。
|
#!/bin/bash
function do_rename
{
for i in {2..999}
do
mv a_${i}.tar.gz a_$((i-1)).tar.gz
done
}
file='a_999.tar.gz'
if [ -e ${file} ]
then
echo ${file} is found.
do_rename
fi