Linux

Unix bash 腳本檢查空 gz 文件

  • May 31, 2012

我正在嘗試編寫一個 bash 腳本,該腳本將通過 .gz 文件進入目錄循環,如果它們為空(即包含在空文件中的未壓縮文件),則將其刪除。

我有幾個問題:

  • 我可以檢查壓縮(gz)空文件的標准文件大小嗎?
  • 或者有沒有更好的方法來檢查 gz 是否包含一個空文件而不用 bash 腳本解壓縮它?

我試圖使用以下程式碼來實現這一點,但它依賴於我認為的文件大小為 0。

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

不幸的是,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

可以為所欲為嗎?

您可以添加-lgzip|gunzip|zcat以列印有關 gzip 壓縮文件的資訊,然後針對未壓縮文件大小進行測試。

$ gunzip -l file.empty.gz 
compressed        uncompressed  ratio uncompressed_name
       31                   0   0.0% file.empty

引用自:https://unix.stackexchange.com/questions/39614