我正在使用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,则打印出目录名称。
知道如何
答案 0 :(得分:1)
如果你想要的只是打印除前四个条目以外的所有条目,只需将其输入head
或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循环是多余的,但可能你会在循环中有更多的命令。
答案 1 :(得分: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
这个对我有用