如何删除除最后两个目录之外的所有目录以及指向这些目录的符号链接

如何删除除最后两个目录之外的所有目录以及指向这些目录的符号链接

我有以下目录结构。

drwxr-xr-x 5 ec2-user ec2-user 4096 May 22 07:03 TEEST  
drwxr-xr-x 5 ec2-user ec2-user 4096 May 24 05:33 BEE-TES  
drwxr-xr-x 5 ec2-user ec2-user 4096 May 24 10:53 ONE  
drwxr-xr-x 5 ec2-user ec2-user 4096 May 25 09:50 TWO  
lrwxrwxrwx 1 ec2-user ec2-user   28 May 25 09:50 previous -> TWO  
drwxr-xr-x 5 ec2-user ec2-user 4096 Jun  1 11:00 TEMP  
lrwxrwxrwx 1 ec2-user ec2-user   28 Jun  1 11:00 Current -> TEMP

如何保留或保存最近修改的最后两个目录(包括符号链接及其指向它们的各自目录)?

我已经尝试了这篇文章中的解决方案 如何删除除符号链接指向的目录之外的所有目录

但是那个甚至删除了指向符号链接的目录,只保留了损坏的符号链接。

提前致谢。

答案1

解析的输出被认为是不好的形式ls,但是如果您使用普通文件名,您可以尝试以下方式:

#!/bin/bash
qty_keep=2

count=0

ls -t | while read name ; do
if [ $count -lt $qty_keep ] ; then
    if [ -d "$name" ] ; then
        count=$((count+1))
        echo "Keeping dir nr $count: $name"
    else
        echo "$name is not a dir; skipping"
    fi
else
    if [ -d "$name" ] ; then
        count=$((count+1))
        echo "Removing dir nr $count: $name"
        # rm -rf "$name"
    else
        echo "$name is not a dir; skipping"
    fi
fi

您可能已经猜到了,除非您取消注释该rm行,否则这不会执行任何操作,但您应该尝试使用注释进行第一次试运行,以查看它是否执行了您想要的操作。

相关内容