如何在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 文件无延伸“)。

相关内容