205

サイズが0の場合、Linuxで特定のファイルを削除するにはどうすればよいですか。追加のスクリプトを使用せずにcrontabでこれを実行したいと思います。

l filename.file | grep 5th-tab | not eq 0 | rm

このようなもの?

4

8 に答える 8

298

これにより、サイズがゼロのディレクトリ(およびそれ以下)内のすべてのファイルが削除されます。

find /tmp -size 0 -print -delete

特定のファイルが必要な場合。

if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi
于 2011-03-29T16:41:24.113 に答える
269

あなたはfindを使いたいでしょう:

 find . -size 0 -delete
于 2011-03-29T16:44:12.607 に答える
140

現在のディレクトリとサブディレクトリで空のファイルを検索して削除するには、次の手順に従います。

find . -type f -empty -delete

-type fディレクトリもサイズ0としてマークされているため、必要です。


ドット.(現在のディレクトリ)は、検索の開始ディレクトリです。GNUが見つかった場合(たとえばMac OSではない場合)、この場合は省略できます。

find -type f -empty -delete

GNUfindドキュメントから:

検索するファイルが指定されていない場合は、現在のディレクトリ(。)が使用されます。

于 2013-08-05T07:24:07.257 に答える
17

このコマンドfindを使用してこれを行うことができます。ファイルを。と照合し-type f、空のファイルを。を使用して照合できます-size 0。次に、との一致を削除でき-deleteます。

find . -type f -size 0 -delete
于 2016-02-28T13:03:46.683 に答える
5

Linuxでは、stat(1)コマンドは、find(1)が必要ない場合に役立ちます。

(( $(stat -c %s "$filename") )) || rm "$filename"

ここでのstatコマンドを使用すると、ファイルサイズを取得できます。これは-c %s(他の形式についてはmanページを参照してください)。私はstatプログラムを実行し、その出力をキャプチャしています。それが$( )です。この出力は数値で見られます、それは外側(( ))です。サイズにゼロが指定されている場合、それはFALSEであるため、ORの2番目の部分が実行されます。ゼロ以外(空でないファイル)はTRUEになるため、rmは実行されません。

于 2011-05-13T09:35:22.030 に答える
5

これはプレーンBSDで機能するため、すべてのフレーバーと普遍的に互換性があるはずです。以下.egin pwd.

find . -size 0 |  xargs rm
于 2016-02-18T19:31:01.380 に答える
1

非再帰的削除の場合(duとawkを使用):

rm `du * | awk '$1 == "0" {print $2}'`
于 2014-09-02T18:27:54.413 に答える
0
find . -type f -empty -exec rm -f {} \;
于 2015-06-28T09:49:36.810 に答える