小智 10
您可以尝试以下操作,在删除每个文件时进行确认:
$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;
Run Code Online (Sandbox Code Playgroud)
或者如果你觉得更有信心:
$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
通常,“我如何……在目录及其子目录中”的答案涉及find. 使用-type f匹配常规文件,-name '*.ext'以限制到特定的扩展,并-size 0限制对空文件。
find /some/dir -name '*.ext' -type f -size 0 -exec rm {} +
Run Code Online (Sandbox Code Playgroud)
如果您的版本find太旧,您可能需要 '... -exec rm {} \;' 相反(使用+速度更快,因为它rm一次调用多个文件)。在 Linux、FreeBSD、NetBSD 和 OSX 下,您可以使用find的内置-delete操作和-empty谓词(相当于-size 0在常规文件上):
find /some/dir -name '*.ext' -type f -empty -delete
Run Code Online (Sandbox Code Playgroud)
在 zsh 中,您可以使用**glob 递归到子目录和glob 限定符以将匹配限制.为大小为 0 ( L0) 的常规文件( )。
rm /some/dir/**/*.ext(.L0)
Run Code Online (Sandbox Code Playgroud)