题
我要删除所有4个最新的目录可在我父目录。你会怎么做这个在庆典?
解决方案
ls -atrd */ | head --lines=-4 | xargs rm -rf
编辑: 加入'a'参数ls
其他提示
请澄清如果你的意思是"删除所有目录但是四个newst的"或"删除(文件和目录)除了四个新的目录"。
还请注意,创建时间都不知道目录。一个可以只告诉了一个目录时的最后修改,那就是,有的文件添加、删除或改名。
你可以做到以下几点:
#!/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
不隶属于 StackOverflow