如何使用perl
查找gzip文件为空a.txt.gz当我解压缩它的空
如何找到压缩gz是空的?
答案 0 :(得分:4)
您无法直接获取未压缩文件的大小,但可以使用搜索功能。从文件创建一个对象,并尝试寻找第一个字节。如果你可以寻找,那么你的文件大小至少为1个字节,否则它是空的。
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Uncompress::Gunzip;
use Fcntl qw(:seek);
my $u = IO::Uncompress::Gunzip->new('readme.gz');
if ( $u->seek(1, SEEK_CUR) ) {
print "Can seek, file greather than zero\n";
}
else {
print "Cannot seek, file is zero\n";
}
答案 1 :(得分:2)
您可以使用Perl 5.10及更高版本附带的IO::Compress::Gzip(或通过CPAN下载)。并使用它来读取文件。
但是,您可以在文件上执行stat,只需查看它是否只包含26个字节,因为空文件只包含26个字节的标题。
我想这完全取决于你想要做什么。你只是想确定一个gzip压缩文件是空的还是你打算读取它并先解压缩?如果是前者,stat
将是最简单的。如果是后者,请使用IO::Compress::Gzip
模块而不是一堆system
命令来调用gzip
。 IO::Compress::Gzip
附带所有Perl发行版5.10及更高版本,因此它是处理Zip的默认方式。
答案 2 :(得分:0)
要检查压缩tar文件的内容,请使用
tar -ztvf file.tgz
要列出.gz文件的内容,请使用
gzip --list file.gz
将其包装在perl中并检查输出中的uncompressed
字段
$ gzip --list fjant.gz
compressed uncompressed ratio uncompressed_name
26 0 0.0% fjant