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

如果您只想打印除前四个条目之外的所有条目,只需将其通过管道传输到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 回答