27

特定のディレクトリで 180 日以上経過したファイルが使用しているディスク容量の合計を見つけようとしています。これは私が使用しているものです:

    find . -mtime +180 -exec du -sh {} \;

しかし、上記は明らかに静かで、見つかったすべてのファイルで使用されるディスク容量を私に与えています。ファイルによって使用される合計追加ディスク容量のみが必要です。findこれはandexecコマンドを使用して実行できますか?

これにはスクリプトを使用したくないだけです。これに 1 つのライナーがあれば素晴らしいと思います。どんな助けでも大歓迎です。

4

5 に答える 5

18

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

find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1
于 2015-06-12T20:39:54.450 に答える
16

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

代わりに、出力をパイプして合計さcutせます。awkしたがって、次のように言えます。

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

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

于 2013-07-02T07:19:17.427 に答える
4

findオプションを使用してファイル サイズを出力できます-printfが、それでもawk合計する必要があります。

たとえば、365 日より古いすべてのファイルの合計サイズ:

find . -type f -mtime +356 -printf '%s\n' \
     | awk '{a+=$1;} END {printf "%.1f GB\n", a/2**30;}'
于 2016-06-24T02:06:02.257 に答える