再会。
我正在创建一个脚本,用于移动某个文件夹中的所有“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