空のgzファイルをチェックするUnix bashスクリプト

空のgzファイルをチェックするUnix bashスクリプト

.gzファイルのディレクトリを繰り返しながらファイルが空の場合は、削除するbashスクリプトを作成しようとしています(たとえば、空中に含まれる非圧縮ファイル)。

いくつかの質問があります。

  • 確認できる圧縮(gz)空のファイルの標準ファイルサイズはありますか?
  • それとも、bashスクリプトを使用して解凍せずにgzに空のファイルが含まれていることを確認するより良い方法はありますか?

これを達成するには、次のコードを使用しようとしていますが、ファイルサイズが0でなければならないと思います。

for f in dir/*
do
    if [[ -s $f ]]
    then
        do_file_creation
    fi
done

ベストアンサー1

残念ながら、gzipには元のファイル名が含まれているため、空のファイルによってサイズが異なります。

gunzip -c $f | head -c1 | wc -c

圧縮されていないサイズがゼロ以外のファイルの場合は1を、圧縮された空のファイルの場合は0を表示します。

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

あなたが望むことができますか?

おすすめ記事