【问题标题】:Linux removing folders older than 1 year and more than 3 filesLinux 删除超过 1 年的文件夹和超过 3 个文件
【发布时间】:2012-07-16 21:55:26
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: linux ant ssh find archive


    【解决方案1】:

    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>
    

    【讨论】:

    • 非常感谢您的回答。我会测试一下并告诉你
    • 如何调整代码以便在远程服务器上执行此代码?
    • @JinAhn ANT 文件集仅适用于本地文件。 ANT 是否安装在远程服务器上?
    • 不是,不是。我通常 ssh 进入存档框并运行命令。还有其他方法吗?
    猜你喜欢
    • 2017-05-26
    • 2018-01-31
    • 2021-04-24
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多