我有一个文件夹,里面装满了各种文件,但没有扩展名。如何删除所有 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 文件无延伸“)。