我想从目录及其所有子目录中删除具有特定扩展名的所有空文件。
答案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)