如何在Linux中批次刪除不含副檔名的zip文件

如何在Linux中批次刪除不含副檔名的zip文件

我有一個充滿不同文件但沒有擴展名的資料夾。如何刪除所有 zip 檔案?

答案1

在我的 Kubuntu 中執行以下命令:

file -b --mime-type path/to/some/zip

返回:

application/zip

我可以用它來檢測當前目錄(帶有子目錄)中的所有 zip 檔案。命令是:

find . -type f -exec sh -c '
   for f do
   file -b --mime-type "$f" | grep -q "^application/zip$" && {
      printf "%s\n" "$f"
      # rm "$f"
      } 
   done
' find-sh {} +

如果結果看起來正常,請取消註解rm "$f"(刪除#)以實際刪除檔案。

筆記:

  • 也不-b--mime-type便攜式選項file。如果您file不支援它們,請檢查哪些裸file path/to/some/zip列印。它可能是:

    path/to/some/zip: Zip archive data, …
    

    其中表示附加資訊。如果我需要依賴此輸出,那麼我的grep命令將是:

    grep -q ": Zip archive data"
    

    但它(可能)會錯誤地偵測名稱中包含該字串的檔案。不管怎樣,grep根據你的file列印內容進行調整。

  • find-sh解釋如下:中的第二個 sh 是什麼sh -c 'some shell code' sh

  • 該命令不關心檔案名稱(在 Linux 中,您所說的「副檔名」只是檔案名稱的一部分)。它回答了您在帖子正文中提出的問題(“如何刪除所有屬於 zip 檔案的檔案?”),而不是標題(“如何批量刪除 zip 檔案”)不含副檔名”)。

相關內容