GNU/Linux >> Linux の 問題 >  >> Linux

find を使用して、180 日以上経過したファイルごとに使用済みディスク容量の合計を計算する

du ファイルのリストを渡すと要約されません。

代わりに、出力を cut にパイプします awk にします それを要約します。つまり、次のように言えます:

find . -mtime +180 -exec du -ks {} \; | cut -f1 | awk '{total=total+$1}END{print total/1024}'

オプション -h に注意してください 人間が読める形式で結果を表示するためのコードは -k に置き換えられました これは 1K のブロックサイズに相当します。結果は MB 単位で表示されます (total/1024 を参照)


@ピーターTは正しいです。これらの回答のほとんどすべてが、ファイルごとにコマンド (du) を呼び出します。これは、リソースを大量に消費し、遅く、不必要です。最も簡単で最速の方法は次のとおりです:

find . -type f -mtime +356 -printf '%s\n' | awk '{total=total+$1}END{print total/1024}'

なぜこれではないのですか?

find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1

Linux
  1. LinuxでX日より古いすべてのファイルを削除するにはどうすればよいですか?

  2. Linux で tmpreaper を使用して N 日以上経過したファイルを削除する方法

  3. Linux で find コマンドを使用して、スペースのあるファイルを検索して削除する

  1. x日より古いファイルまたはフォルダーを見つけて削除する

  2. Linuxで特定の日付より古いファイルを削除するにはどうすればよいですか?

  3. サブディレクトリを含む x 日より古いファイルを削除する Bash スクリプト

  1. 1 分以上経過したすべてのファイルを検索

  2. 30 日以上経過したファイルを安全に削除する

  3. ファイル名を日付として 30 日以上経過したファイルを削除する