Linux 删除超过 1 年的文件夹和超过 3 个文件 [英] Linux removing folders older than 1 year and more than 3 files

查看:23
本文介绍了Linux 删除超过 1 年的文件夹和超过 3 个文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个 ant 脚本来清理存档文件夹

I'm writing an ant script to clean up an archive folder

这是我需要清理的方法:我需要删除超过一定天数的文件夹,并且其中包含 3 个以上的文件.例如,如果一个文件夹存在 300 天,但只有 3 个文件,那么它不会被删除.

Here's how I need to clean it up: I need to delete folders old than a certain amount of days AND has more than 3 files in it. So for example if a folder is 300 days old but only has 3 files than it will NOT be deleted.

我知道我可以通过 ssh 进入存档并执行 find -mtime +365 -exec rm -rf {} ;\ 来删除超过 1 年的文件,但我不知道如何记账最少 3 个文件

I know I can ssh into the archive and do find -mtime +365 -exec rm -rf {} ;\ to delete files older than 1 year but I don't know how to account for the minimum of 3 files

我也知道 find -type f |wc -l 将列出文件的数量,但这在脚本编写方面并没有真正的帮助

I also know that find -type f | wc -l will list the number of files, but that doesn't really help in terms of scripting

有什么想法吗?

推荐答案

ANT 选择器 使您能够自定义要删除的文件集.

ANT selectors enable you to customize the fileset to delete.

尝试以下操作:

<target name="purge">

    <tstamp>
        <format property="touch.time" pattern="MM/dd/yyyy hh:mm aa" offset="-300" unit="day"/>
    </tstamp>

    <delete>
        <fileset dir="${src.dir}">
            <date datetime="${touch.time}" when="before"/>

            <scriptselector language="javascript"><![CDATA[
                if (file.getParentFile().list().length > 3) {
                    self.setSelected(true);
                }
                else {
                    self.setSelected(false);
                }
            ]]> </scriptselector>
        </fileset>
    </delete>
</target>

这篇关于Linux 删除超过 1 年的文件夹和超过 3 个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆