我有以下目录结构: -
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下的一些文件是零字节)。如何查找和删除此类文件?
假设您有一个find
足够兼容 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
(因为它通过在内部进行调用避免了执行rm
命令的开销):unlink()
find
find foo -size 0 -delete # Not POSIX standard