1

私は次のディレクトリ構造を持っています:-

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 の下の一部のファイルはゼロ バイトです)。そのようなファイルを見つけて削除するにはどうすればよいですか?

4

1 に答える 1

13

表記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を実行するオーバーヘッドを回避できるため):rmunlink()find

find foo -size 0 -delete                    # Not POSIX standard
于 2013-04-07T06:49:35.330 に答える