du --exclude ディレクトリ- これは可能ですか?

du --exclude ディレクトリ- これは可能ですか?

ディレクトリ以外のファイルツリーのディスク使用量を計算する方法

私は次のようなものが欲しい:

du --exclude type d

rsyncを使用してホームディレクトリの一部をミラー化/バックアップしていて、バックアップ後にフルサイズを再確認したいのですが、何らかの理由で1つのディレクトリのソースとターゲットのサイズが異なります(例:12288 Bや16384 B)。明らかに、ほとんどのディレクトリには4096 Bがあります。

ソースとターゲットの両方がext4です。

答え1

使用したいすべてのアイテムのリストを提供してください。--files0-from

 find -type f -print0 | du --files0-from=-

答え2

GNU findがあれば、ファイルサイズを印刷することができます。

find /source ! -type d -printf '%P %s\n'

決定的な出力を得るには、出力をソートします。ファイル名に改行文字が含まれている場合、異なる順列に対して同じソートされた出力が得られますが、これは意図的に設計されていない限り発生しません。

comm -3 <(find /source ! -type d -printf '%P %s\n') <(find /destination ! -type d -printf '%P %s\n')

答え3

提案された2つの答えはLinux用です。 POSIXに固執する提案は次のとおりです。

#!/bin/sh
find "$@" -type f |\
xargs du -s |\
awk 'BEGIN {total = 0;} { total += $1; } END { print total; }'

または、パス名のスペースを解決してみてください(まだPOSIX)。

#!/bin/sh
find "$@" -type f -exec du -s {} + |\
awk 'BEGIN {total = 0;} { total += $1; } END { print total; }'

ところでOPが要請しました。フルサイズ;何らかの理由で他の答えはファイルごとにサイズを分析しようとします。

追加資料:

答え4

私はあなたが探しているものだと思います--max-depth

例えば。すべてのサブディレクトリを含まずにディレクトリのディスク使用量を計算したい場合は、これを行うことができます。

du [directory name] --max-depth=1

サブディレクトリのサイズも確認するには、深さを増やすだけです。

使用方法に関する多くの情報を提供するリンクを見つけました。duそれでも役に立たない場合は、このウェブサイトを確認してください。。それは多くの情報を提供しますdu

関連情報