我有以下的目录结构:
foo/dir1/ foo/dir2/ foo/dir3/ foo/dir1/a.rb foo/dir1/b.rb foo/dir1/c.rb foo/dir1/d.rb foo/dir2/e.rb foo/dir2/f.rb foo/dir2/g.rb foo/dir2/h.rb
如何从某个文件夹中删除零字节文件(dir1,dir2下的一些文件是零字节)。 我如何查找和删除这些文件?
假设你有一个足够符合POSIX 2008标准的版本来支持+
符号:
find foo -size 0 -exec rm -f {} +
如果你不这样做,你可以使用以下变种:
find foo -size 0 -print0 | xargs -0 rm -f # But you probably have + anyway find foo -size 0 -exec rm -f {} \; # Slow but reliable find foo -size 0 -print | xargs rm -f # Fails with spaces etc in file names
而重复问题的接受答案则建议使用-delete
,当你使用的find
方法支持时,它是好的(因为它避免了在find
unlink()
执行unlink()
调用来执行rm
命令的开销):
find foo -size 0 -delete # Not POSIX standard