如何按大小和扩展名搜索文件?

如何按大小和扩展名搜索文件?

我想从目录及其所有子目录中删除具有特定扩展名的所有空文件。

答案1

您可以尝试以下操作,在删除每个文件后进行确认:

$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;

或者如果您感觉更自信:

$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;

答案2

通常,“我如何……在目录及其子目录中”的答案涉及find.用于-type f匹配常规文件、-name '*.ext'限制为特定扩展名以及-size 0限制为空文件。

find /some/dir -name '*.ext' -type f -size 0 -exec rm {} +

如果您的版本find太旧,您可能需要'... -exec rm {} \;'相反(使用+速度更快,因为它rm一次调用许多文件)。在 Linux、FreeBSD、NetBSD 和 OSX 下,您可以使用find的内置操作-delete-empty谓词(相当于-size 0常规文件):

find /some/dir -name '*.ext' -type f -empty -delete

在 zsh 中,您可以使用**glob 递归到子目录并全局限定符将匹配限制为.大小为 0 ( L0) 的常规文件 ( )。

rm /some/dir/**/*.ext(.L0)

相关内容