【问题标题】:AIX Clear contents of files larger than 100 MBAIX 清除大于 100 MB 文件的内容
【发布时间】:2015-05-18 21:46:06
【问题描述】:

我正在寻找用于清除已超过 100 MB 的目录中所有文件的命令。我正在使用 AIX 机器,它正在生成快速填充空间的日志。我不想删除这些文件。只是想清除内容。

【问题讨论】:

  • 什么是 100 MB?文件?或者目录本身的大小是 100 MB? “清除内容”是什么意思?如果将文件截断为 0 字节,可以接受吗?为什么不删除它们呢?还是压缩它们?
  • 压缩是一个不错的选择。我将对此进行探索。我无法删除,因为一旦删除系统无法创建文件。
  • 根据创建日志文件的应用程序,可能会有特定于应用程序的解决方案,例如 rotatelogs 或类似的解决方案。

标签: shell aix


【解决方案1】:

当 progs 不保持文件句柄打开时,您可以使用

find yourLogDir -type f -size +100M -exec cp /dev/null {} \;

编辑,见 cmets:
如果您的系统不支持 M 标志,请输入一个长数字。

【讨论】:

  • 我在 AIX 6.1 上对此进行了一些测试。我认为 100M 语法并没有真正起作用。放置+104857600(或您想要的任何大小)可能更安全。它似乎更可靠/更便携。
  • @pedz Tx。我家里没有 AIX,所以无法验证我的解决方案。当 M 语法不受支持时,我认为 Sandeep 会理解。他做到了。
【解决方案2】:

您可以使用以下命令:

find LogDir -type f -size +104857600c -exec cp /dev/null {} \;  

104857600后面的'c'表示数字以字节为单位

【讨论】:

    【解决方案3】:

    我在我的 AIX 机器上对 @WalterA 的回答做了一些调试。看起来我们必须稍微更改提供的命令:

    find yourLogDir -type f -size +(multiple of 512 Bytes) -exec cp {} /dev/null \;
    

    例如,如果您要复制大小超过 100 MB 的日志文件,只需在正确的目录路径下执行以下命令即可:

    find yourLogDir -type f -size +204800 -exec cp {} <dir path to copy> \;
    

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多