昨年内に変更されたディレクトリ内の全ファイルのサイズを取得する


3

私はLinuxサーバー上のストレージ使用量を評価しようとしています。

大部分のストレージは画像からきています。昨年に変更されたファイルのサイズを把握できるかどうかを確認したいのですが。また、過去5年間で、imagesディレクトリの合計サイズ(40 GB)と比較してもわかります。

私が試してみました du -h それは便利ですが、修正された日付でこれらの結果をフィルタリングする方法がわかりません。

回答:


3

あれば num-utils パッケージがインストールされている numsum 多数の数字を追加する簡単な方法を提供します。しながら numfmt 出力を単純化します。

find . -type f -mtime -365 -printf '%s\n' | numsum | numfmt --to=iec

find から借りたコード Ziggy Crueltyfree Zeitgeister 。)

最後に 5 年はする:

find . -type f -mtime -$((365 * 5)) -printf '%s\n' | numsum | numfmt --to=iec

もし 正確な日数が必要です。 date それを提供します。これは、を返すシェル関数です。 正確な 最後の日数 n 年:

# covert Last _n_ Years to Days
# usage:  ly2d n
ly2d() \
    { echo $(( \
               $(( `date -d today +%s` - \
                   `date -d $1" years ago" +%s` )) \
           / 60 / 60 / 24 )) ; \
    }

を使う ly2d 最後に 5 年:

find . -type f -mtime -$(ly2d 5) -printf '%s\n' | numsum | numfmt --to=iec

numfmtが利用できないようです。それは別のライブラリを必要としますか?
Damon

Debianの coreutils パッケージは持っています numfmt または確認する 上流の情報源 。それでも失敗する場合は、 numfmtその場合、合計はバイト単位になります。
agc

2

perlを使ってfindの出力を合計することができます。

find . -type f -mtime -365 -printf '%s\n' |\
  perl -e 'my $s=0; while(<>) { $s += $_; } print "$s\n"'

3
あれば num-utils パッケージがインストールされている numsum それよりも簡単です perl find . -type f -mtime -365 -printf '%s\n' | numsum
agc

追加 | numfmt --to=iec も役立ちます。
agc

@agc答えとして投稿してください。理由はありません。私は喜んでそれを支持します。
MariusMatutiae
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.