首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Unix 操作 shell编纂

2012-12-29 
Unix 操作 shell编写本帖最后由 neu_solskjaer 于 2011-10-14 17:51:03 编辑需求如下:/tmp路径下有以下log

Unix 操作 shell编写
本帖最后由 neu_solskjaer 于 2011-10-14 17:51:03 编辑 需求如下:
/tmp路径下有以下log文件
ID111.20111001143025
ID112.20111001143225
ID111.20111001143526
ID113.20111001144001
ID114.20111001142925
ID114.20111001143710
... ...

想要把相同ID的log文件只保留最新的,其他的全部删除。

shell脚本写到一半就不会写了,求教~~

----------------------------------
#!/usr/bin/ksh
find -name "ID*"|sort|while read file
do
#这里怎么循环就不太会写了... ...
done



希望各位大侠能给点指导和建议。

[解决办法]

#!/bin/bash

preName=""

ls ID* 
[解决办法]
 sort 
[解决办法]
 while read fileName
do
        preID=${preName/%.*/};
        curID=${fileName/%.*/};

        if [ "$preName" != "" -a "$preID" = "$curID" ];then
                rm $preName;
                echo "rm ${preName}.........";
        fi

        preName=$fileName
done

[解决办法]
引用:
记录一个preName就可以了,如果file==preName,那么删除preName。


awk表示鸭梨不大

ls -t -1 ID* 
[解决办法]
 awk -F. '{a[$1]=$0}END{for(i in a)print a[i]}'

热点排行