+ -
当前位置:首页 → 问答吧 → 循环删除的脚本需求?

循环删除的脚本需求?

时间:2011-03-22

来源:互联网

现在有3个目录 a,b,c,每个目录下都有一个文件d.txt,
d.txt的格式是:
# NUMA     NUMB
       3           841
       4           891

首先我想判断出: a,b,c 里d.txt里     3和4最小的值是多少。。。

然后去固定的目录如 /arch下把3和4之前的文件都删除掉。

譬如:
/arch下的文件有3的文件有 820---841
                       4的文件有 870--891
我现在判断出a,b,c目录d.txt文件里最小的值3是841,4是891,那么我就想把/arch下841,891之前的文件都删除掉
也就是要删除3的是820-841,4的是870-891!

这个脚本怎么写哦?

作者: aswellas   发布时间: 2011-03-22

看到晕,
/arch的文件名是数字(820---841, 870--891)么,
只要包含3或4,并且满足:文件名<之前判断得到的最小值就删除?是这个意思不?

作者: yinyuemi   发布时间: 2011-03-22



QUOTE:
看到晕,
/arch的文件名是数字(820---841, 870--891)么,
只要包含3或4,并且满足:文件名
yinyuemi 发表于 2011-03-22 11:09




    它们的命名格式是  3-840-xxx.dbf   4-890-xxx.dbf

     删除需求就是 把3-820-xxx.dbf 到3-840-xxx.dbf
                            4-870-xxx.dbf 到4-890-xxx.dbf   删掉

作者: aswellas   发布时间: 2011-03-22

看了半天沒看懂 表達意思  看來我的理解能力要加強啊!

作者: dintan   发布时间: 2011-03-22



QUOTE:
看了半天沒看懂 表達意思  看來我的理解能力要加強啊!
dintan 发表于 2011-03-22 11:15




    估计是我表达能力需要加强!

作者: aswellas   发布时间: 2011-03-22

我就会写 判断大小的一段。。。。
       DataFile=''                                                                                                                 
        DirList="a b c"                                                                                                   
                                                                                                                                    
        for user in ${DirList}                                                                                                      
        do                                                                                                                          
                DataFile=${DataFile}' /home/'${user}'/a.txt'                                                      
        done                                                                                                                        
        echo ${DataFile} >> /home/arch.log                                                                                 
                                                                                                                                    
        min_1_seq=`grep " 3 " ${DataFile} 2>/dev/null| awk '{print $3}' |sort |awk 'NR == 1 {print $1}'`                           
        min_2_seq=`grep " 4 " ${DataFile} 2>/dev/null| awk '{print $3}' |sort |awk 'NR == 1 {print $1}'`                           
        echo 'Node1:'${min_1_seq} >> /home/arch.log                                                                        
        echo 'Node2:'${min_2_seq} >> /home/arch.log                       


怎么删除以前的文件,不大明白!

作者: aswellas   发布时间: 2011-03-22

本帖最后由 yinyuemi 于 2011-03-22 11:50 编辑

try:
  1. eval `awk '$1==3{a=a<$2?a:$2}$1==4{b=b<$2?b:$2}END{print "v3="a; "v4="b}' /a/d.txt /b/d.txt /c/d.txt`
  2. cd /arch
  3. for line in `ls *.dbf`
  4. do
  5.         if [ ${line:0:1} -eq 3 ]
  6.         then
  7.                 if [ $(line:2:3) -le $v3 ]
  8.                 then
  9.                 rm $line
  10.                 fi
  11.         fi

  12.         if [ ${line:0:1} -eq 4 ]
  13.         then
  14.                 if [ $(line:2:3) -le $v4 ]
  15.                 then
  16.                 rm $line
  17.                 fi
  18.         fi
  19. done
复制代码
i 以改成line:em03:

作者: yinyuemi   发布时间: 2011-03-22



QUOTE:
try:
yinyuemi 发表于 2011-03-22 11:28




    先学习一下!~

作者: aswellas   发布时间: 2011-03-22

for i in `ls *.dbf`   是否应该改成 for line in `ls *.dbf`   ?

作者: aswellas   发布时间: 2011-03-22

回复 aswellas


    应该是

作者: expert1   发布时间: 2011-03-22

awk '$1==3{a=a<$2?a:$2}$1==4{b=b<$2?b:$2}  这行啥意思呀?

作者: aswellas   发布时间: 2011-03-22

回复 aswellas


    第一个域 等于3的时候 比较之前的值(841之类的)是否比当前行的小 是的话 赋值给变量a,否则不变。

作者: lkk2003rty   发布时间: 2011-03-22

热门下载

更多