4

アーカイブ フォルダーをクリーンアップする Ant スクリプトを作成しています

クリーンアップする必要がある方法は次のとおりです。特定の日数よりも古いフォルダーを削除する必要があり、その中に3つ以上のファイルがあります。たとえば、フォルダが 300 日経過していてもファイルが 3 つしかない場合、そのフォルダは削除されません。

アーカイブに ssh してfind -mtime +365 -exec rm -rf {} ;\1 年以上前のファイルを削除できることは知っていますが、最低 3 つのファイルを考慮する方法がわかりません

また、ファイルの数がリストされることも知っていfind -type f | wc -lますが、スクリプトの観点からはあまり役に立ちません

何か案は?

4

1 に答える 1

4

ANTセレクターを使用すると、削除するファイルセットをカスタマイズできます。

次のことを試してください。

<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>
于 2012-07-18T17:45:28.220 に答える