2

Linux ksh を使用して、不要な古いディレクトリを削除しています。

私が使用するのはこれです:

   #! /bin/ksh
   OLD=/opt/backup
   DIR_PREFIX="active"
   DIRS=$(ls ${OLD} -t | grep ${DIR_PREFIX})
   i=0
   while [[ $i -lt ${#DIRS[*]} ]]; do
       if [ $i -gt 4 ];
      then
          echo ${DIRS[$i]}
          ((i++))
      else
          ((i++))
      fi
  done

私がやろうとしているのは、時間でソートされたすべてのディレクトリのリストを変数に格納することです-配列になると思いますが、どういうわけかそのサイズは1です... ...そして、whileループで、ディレクトリの位置が 4 より大きい場合は、ディレクトリ名を出力します。

方法の任意のアイデア

4

2 に答える 2

1

最初の 4 つのエントリを除くすべてのエントリを出力するだけの場合は、それをheadorにパイプするだけsedです。

#!/bin/sh
OLD=/opt/backup
DIR_PREFIX=active
ls $OLD -t | grep $DIR_PREFIX | sed 1,4d | while read DIR; do
    echo $DIR;
done

を使用しているだけの場合echo、while ループは冗長ですが、おそらくループ内により多くのコマンドが含まれることになります。

于 2013-01-31T09:07:40.590 に答える
0
OLD=/opt/backup
DIR_PREFIX="active"
DIRS_RESULT=$(ls ${OLD} -t | grep ${DIR_PREFIX})
i=0
for DIR in ${DIRS_RESULT}
    do
        if [ $i -gt 4 ];
        then
            echo ${DIR}
            rm -rf ${DIR}
            ((i++))
        else
            ((i++))
        fi
    done

これは私のために働く

于 2013-01-31T01:57:07.610 に答える