我要删除所有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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top