Unix bash 脚本检查空的 gz 文件

van*_*van 5 linux bash gzip shell-script

我正在尝试编写一个 bash 脚本,该脚本将通过 .gz 文件进入目录循环,并在它们为空时将其删除(即包含在 empty.gz 中的未压缩文件)。

我有几个问题:

  • 我可以检查压缩 (gz) 空文件的标准文件大小吗?
  • 或者有没有更好的方法来检查 gz 是否包含一个空文件而不用 bash 脚本解压它?

我试图使用以下代码来实现这一点,但我认为它依赖于文件大小为 0。

for f in dir/*
do
    if [[ -s $f ]]
    then
        do_file_creation
    fi
done
Run Code Online (Sandbox Code Playgroud)

Dou*_*der 6

不幸的是,gzip 包含原始文件名,因此它的大小会因不同的空文件而异。

gunzip -c $f | head -c1 | wc -c
Run Code Online (Sandbox Code Playgroud)

对于未压缩大小不为零的文件,将回显 1,对于压缩的空文件,将回显 0。

for f in dir/*
do
    if [[ $(gunzip -c $f | head -c1 | wc -c) == "0" ]] 
    then
        do_file_creation
    fi
done
Run Code Online (Sandbox Code Playgroud)

可以做你想做的吗?