【发布时间】:2022-08-18 21:23:06
【问题描述】:
我创建了这个 sn-p 来遍历文件夹并检查是否存在无效的 gz 文件并通过再次 gzip 对其进行修复。 这工作正常,但前提是只有几个文件。如果有数千个文件,这需要很长时间。
有没有更优化的方法来做到这一点。
fix_corrupt_files()
{
dir=$1
for f in $dir/*.gz
do
if gzip -t $f;
then :
else
log \"$(basename $f) is corrupt\"
base=\"$(basename $f .gz)\"
log \"fixing file\"
mv $f $dir/$base
gzip $dir/$base
log \"file fixed\"
fi
done
}
-
命令
mv $f $dir/$base和gzip $dir/$base的目的是什么?似乎您从 gzip 文件中剥离了.gz扩展名并重新 gzip 。这没有任何意义,也不会修复损坏的 gzip 文件。 -
\"corrupt\" 可能有点误导对不起。该文件实际上仍然完好无损,我可以“cat”它并且仍然可以看到它的内容。只是即使它是 .gz 格式,它也会抛出 \"not in gzip format\" 错误。这就是为什么我正在做 re-gzip 来修复它。
-
我想我现在明白了。该文件最初没有被 gzip 压缩,但不知何故得到了
.gz扩展名。