我想删除父目录中除最新的4个目录外的所有目录。您会如何在Bash中实现这一点?
ls -atrd */ | head --lines=-4 | xargs rm -rf
编辑:将 'a' 参数添加到 ls 命令中
#!/bin/bash
#store the listing of current directory in var
mydir=`ls -t`
it=1
for file in $mydir
do
if [ $it -gt 5 ]
then
echo file $it will be deleted: $file
#rm -rf $file
fi
it=$((it+1))
done
(去掉rm前面的#才能真正执行;)
另一种使用数组(为什么不呢?)的BSD安全方法
#!/bin/bash
ARRAY=( `ls -td */` )
ELEMENTS=${#ARRAY[@]}
COUNTER=4
while [ $COUNTER -lt $ELEMENTS ]; do
echo ${ARRAY[${COUNTER}]}
let COUNTER=COUNTER+1
done