如果大于500M,如何搜索查找文件并压缩

如果大于500M,如何搜索查找文件并压缩

我需要找到大于 500M 且超过 1 天的文件,并且需要压缩这些文件。我还需要省略扩展名为 .gz 的文件。如何才能实现呢?

答案1

LC_ALL=C find . ! -name '*.gz' \
                -type f \
                -size +"$((500*1024*1024))c" \
                -mtime +0 \
                -exec gzip {} +

这里用于gzip压缩。另请参阅xzbzip2compress了解具有不同压缩格式的其他压缩实用程序。

请注意,某些find实现(例如 GNU)find也支持-size +500M.

您可以添加-v选项以gzip获取有关进度的一些信息。

如果file和都file.gz存在,您将收到确认提示。-f如果您想强制压缩,请添加该选项,或者< /dev/null如果您不希望被file.gz覆盖并且不想回答提示,请添加该选项。

请注意,-mtime +0检查年龄是否以整数天数四舍五入向下大于 0,因此对于存在时间为 1 天或以上的文件来说,该值成立,同时-size +500M检查大小(以兆字节为单位的整数)是否四舍五入向上大于500,因此对于大小为的文件也是如此严格地大于 500M(524288000 字节)。

LC_ALL=C是为了确保*.gz匹配名称以 结尾的文件,.gz无论文件名的开头是否包含当前语言环境中的有效字符。不过,这会产生影响错误消息语言的大小效应。

如果您想在不实际执行的情况下检查它会做什么,请替换gzipecho gzip.

相关内容