Linux
Unix bash 腳本檢查空 gz 文件
我正在嘗試編寫一個 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
可以為所欲為嗎?
您可以添加
-l
到gzip|gunzip|zcat
以列印有關 gzip 壓縮文件的資訊,然後針對未壓縮文件大小進行測試。$ gunzip -l file.empty.gz compressed uncompressed ratio uncompressed_name 31 0 0.0% file.empty