仅当文件是.png图像文件时,才使用bash命令删除目录中的所有文件

时间:2013-08-03 18:06:04

标签: linux bash

对于新问题我很抱歉,我通常会查找如何做到这一点,但我处于一个可怕的情况,任何错误都可能导致大量文件丢失,所以我需要小心。

有什么想法吗?最好是经过预先测试的,谢谢!

3 个答案:

答案 0 :(得分:3)

我将假设文件没有与文件类型相对应的扩展名(PNG文件的.png),否则解决方案就很明显了。

如果是这种情况,你可以使用file的魔力。此命令将显示当前目录和任何子目录中的任何PNG文件:

$ find  -exec bash -c "file -b --mime-type {} | grep -q ^image/png$" \; -print

这个会删除它们:

$ find  -exec bash -c "file -b --mime-type {} | grep -q ^image/png$" \; -delete

答案 1 :(得分:2)

由于您说它可能导致大量文件丢失,您可以先找到这些文件,只是为了确保文件列表正确。

find YOUR_DIRECTORY -name '*.png'

确认文件列表后,只需添加-exec

即可
find YOUR_DIRECTORY -name '*.png' -exec rm -f {} +

P.S:这将在子目录中进行搜索并查找/删除它们。

答案 2 :(得分:1)

这实际上很简单。

只需cd进入您的目录。

然后输入

rm *.png

这将自动删除所有带有PNG扩展名的文件。

至于你担心丢失数据,只需复制(或复制)目录。备份重要数据总是好的。你永远不知道什么时候需要它们!