サイズが0の場合、Linuxで特定のファイルを削除するにはどうすればよいですか。追加のスクリプトを使用せずにcrontabでこれを実行したいと思います。
l filename.file | grep 5th-tab | not eq 0 | rm
このようなもの?
サイズが0の場合、Linuxで特定のファイルを削除するにはどうすればよいですか。追加のスクリプトを使用せずにcrontabでこれを実行したいと思います。
l filename.file | grep 5th-tab | not eq 0 | rm
このようなもの?
これにより、サイズがゼロのディレクトリ(およびそれ以下)内のすべてのファイルが削除されます。
find /tmp -size 0 -print -delete
特定のファイルが必要な場合。
if [ ! -s /tmp/foo ] ; then
rm /tmp/foo
fi
あなたはfindを使いたいでしょう:
find . -size 0 -delete
現在のディレクトリとサブディレクトリで空のファイルを検索して削除するには、次の手順に従います。
find . -type f -empty -delete
-type f
ディレクトリもサイズ0としてマークされているため、必要です。
ドット.
(現在のディレクトリ)は、検索の開始ディレクトリです。GNUが見つかった場合(たとえばMac OSではない場合)、この場合は省略できます。
find -type f -empty -delete
検索するファイルが指定されていない場合は、現在のディレクトリ(。)が使用されます。
このコマンドfind
を使用してこれを行うことができます。ファイルを。と照合し-type f
、空のファイルを。を使用して照合できます-size 0
。次に、との一致を削除でき-delete
ます。
find . -type f -size 0 -delete
Linuxでは、stat(1)コマンドは、find(1)が必要ない場合に役立ちます。
(( $(stat -c %s "$filename") )) || rm "$filename"
ここでのstatコマンドを使用すると、ファイルサイズを取得できます。これは-c %s
(他の形式についてはmanページを参照してください)。私はstatプログラムを実行し、その出力をキャプチャしています。それが$( )
です。この出力は数値で見られます、それは外側(( ))
です。サイズにゼロが指定されている場合、それはFALSEであるため、ORの2番目の部分が実行されます。ゼロ以外(空でないファイル)はTRUEになるため、rmは実行されません。
これはプレーンBSDで機能するため、すべてのフレーバーと普遍的に互換性があるはずです。以下.egin pwd
(.
)
find . -size 0 | xargs rm
非再帰的削除の場合(duとawkを使用):
rm `du * | awk '$1 == "0" {print $2}'`
find . -type f -empty -exec rm -f {} \;