Linux删除超过1年的文件夹和3个以上的文件

时间:2012-07-17 22:14:50

标签: linux ant ssh find archive

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

以下是我需要清理它的方法:我需要删除超过一定天数的文件夹并且其中包含3个以上的文件。因此,例如,如果文件夹是300天,但只有3个文件,则不会被删除。

我知道我可以浏览存档并执行find -mtime +365 -exec rm -rf {} ;\删除超过1年的文件,但我不知道如何考虑至少3个文件

我也知道find -type f | wc -l会列出文件的数量,但这对脚本而言并没有多大帮助

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

ANT selectors可让您自定义要删除的文件集。

尝试以下方法:

<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>