如何对某个文件夹中的特定文件进行 gzip 压缩?

如何对某个文件夹中的特定文件进行 gzip 压缩?

再会。

我正在创建一个脚本,用于移动某个文件夹中的所有“logA”文件并每 3 小时添加时间戳,然后将其压缩。

这是脚本的基础:

cd /logs
mv *logA+timestamp /backupDIR
cd /backupDIR

--然后是GZIP部分--

由于它每 3 小时运行一次,因此有时 /backupDIR 中已经存在 .gzip 文件。样本:

logA.07132020-16.00.gz
logA.07132020-19.00.gz
logA.07132020-22.00.gz
logA.07142020-02.00

如何排除脚本中已压缩的文件?我应该做循环来检查是否仍然有 .logA+timestamp 吗?

答案1

gzip程序已经为您执行此操作:它拒绝使用.gz以下命令压缩文件

gzip: <file>.gz already has .gz suffix -- unchanged

所以你不需要排除已经压缩的文件。
要抑制错误消息,请使用gzip -q.

答案2

由于您尚未提供gzip正在运行的命令,因此我假设您正在做一些类似于gzip *或的琐碎事情gzip someprefix*,并且这些可能在大多数情况下都有效(注意于尔根的回答.)

但是,如果目录中有很多您不想考虑的文件(并且只有少数您考虑)可以导致参数耗尽问题(和/或在gzip确定要使用哪些文件时速度会受到小影响)。

有很多方法可以解决这个问题,以下是其中之一:

find /backupDIR -type f ! -name '*.gz' -print0 | xargs -0 gzip

如果您不想遍历子目录,请按如下方式修改:

find /backupDIR -maxdepth 1 -type f ! -name '*.gz' -print0 | xargs -0 gzip

相关内容