【问题标题】:AIX / Unix - Delete files older than x days [duplicate]AIX / Unix - 删除超过 x 天的文件 [重复]
【发布时间】:2018-01-02 02:19:26
【问题描述】:

我已经为此苦苦挣扎了好几天了。看起来很简单,但我似乎找不到完成这个(看似)简单任务所需的正确命令或参数。我需要删除超过 x 天的目录中的通配符文件。我尝试了以下方法无济于事,我想知道通配符是否可能是问题所在。

find /path/to/files/ -name file_* -mtime +45 -exec rm '{}' +
find /path/to/files/ -name file_* -mtime +45 -exec rm {} ;\
find /path/to/files/ -name file_* -mtime +45 | xargs rm

查找工作正常,它列出了正确的文件。是删除不起作用。

【问题讨论】:

  • 也许是find /path/to/files/ -name "file_*" -mtime +45 -delete

标签: unix aix xargs rm


【解决方案1】:

您需要将通配符传递给find,以保护其免受shell 扩展,并对最后的; 进行非专用化:

find /path/to/files/ -name "file_*" -mtime +45 -exec rm {} \;

【讨论】:

    【解决方案2】:

    我意识到以下代码对我来说可以正常工作:

    find /path/to/files/ -name file_* -mtime +45 -exec rm '{}' +
    

    【讨论】:

    • 仅当您在通配符不匹配任何内容的目录中运行它时。正确而可靠的解决方案是引用通配符,就像@Jean-Baptiste 的回答一样。
    【解决方案3】:

    对于 AIX 6.1,需要稍作改动。包括详细解释(公平警告)

    找到 . /path/to/files/ -name "Files*.*" -mtime +45 -exec

    需要那个点。对于“Files*.”,您将使用您的姓名。我的文件夹是自定义报告文件夹,文件的日期包含在名称中。但是所有的报告都以“每日”开头。所以我有“每日.”。我们每天生成 2 份报告。特定的报告名称夹在文件名中的“每日”和生成日期之间。所以 Daily.* 得到了他们所有。我一直未能成功使用“.”。这可能特定于我们正在使用的 AIX 6.1。 AIX 命令可能因版本而异。

    祝你好运!

    【讨论】:

    • 听起来像是另一个问题(如果问题有点不清楚)。
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多