duのファイルのみでサイズを取得する


51

duコマンドを使用して、すべてのファイルとそのサブディレクトリ内のすべてのファイルのサイズを取得するにはどうすればよいですか。

すべてのファイル(およびサブディレクトリ内のファイル)のサイズを取得するために次のコマンドを試行しています

find . -type f | du -a

ただし、これによりフォルダーサイズも出力されます。すべてのファイルとサブディレクトリ内のファイルのサイズのリストを取得するにはどうすればよいですか?私も試してみましたexec flagが、それは結果を実行した後、私は別のコマンドにパイプへの出力方法がわからないよfindにしますdu

オペレーティングシステムは、kshシェルを備えたAIX 6.1です。

回答:


57

私は通常、-execユーティリティを使用します。このような:

find . -type f -exec du -a {} +

GNU findでbashとkshの両方で試しました。AIXを試したことはありませんが、findのバージョンには何らかの-exec構文があると確信しています。

次のスニペットは、リストを大きい順に並べ替えます。

find . -type f -exec du -a {} + | sort -n -r | less

3
あなたがfind -print0他のGNU機能にアクセスできない場合は、この回答を使用します。使用可能な場合、で置換\;する\+と、呼び出しが少なくduなり、パフォーマンスが向上します。
jw013

おかげで、duはさまざまな単位でサイズのフラグを提供しているため、特にうまくいきます。
Shardul Upadhyay

+オプションに関する情報が見つかりませんでした。それはのためのオプションであるduかのためfind?そして、なぜ呼び出しが少なくなるのですか?
アメリオバスケスレイナ

1
これはの標準オプションですfindexecコマンド(この例ではdu)に1回だけ指定し、その結果はすべてfindコマンドへの連続した引数として指定されます。
rahmu

WTF、理由はないが、コマンドのようなdu -f --threshold=1G
アレクサンダー・ミルズ

16

GNUユーティリティがある場合は、試してください

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

コマンドは、print0が有効なコマンドではなく、最後のマイナスが認識されたフラグではなかったと言って失敗しています。またはフラグをman duリストしていないため、このアプローチが機能するとは思わない。filesfrom
シャードゥルウパディアイ

オペレーティングシステムをタグとして質問に追加する必要があります。GNUを持っていると思いましたが、それについて言及するのを忘れました。
jw013

1
私に賛成票をください!あなたの特定のソリューションは、と連携しdu -ch、一致するファイルの総計を取得するには:find . -name 'blah blah.*' -print0 | du --files0-from=- -ch
マイケルGoldshteyn

9

私は一般的に使用します:

find . -type f -print0 | xargs -r0 du -a

Xargsは通常、引数が渡されていなくてもコマンドを呼び出します。xargs du </dev/null呼び出されますが、xargs -r du </dev/nullduは呼び出されません。-0代わりに、改行のヌル終端文字列の引数のルックスが終了しました。

その後、通常| awk '{sum+=$1} END {print sum}'、合計を取得するために最後に追加します。


2
then I usually add:-)金の価値がある
ラデク

2

これは、長いパラメーター名と人間によるソートを備えたバージョンです。

find . -type f -exec du --human {} + | sort --human --reverse | head

私も-a/--allに渡す必要はありませんでしたdu


-2

現在のディレクトリ内の特定のファイル

du -ch files*

より短く、私のために働く

du -sh .

現在のディレクトリとサブのすべてのファイル

du(GNU coreutils)8.30


1
(1)どういう意味du -ch files*ですか?現在のディレクトリが含まれているとantapplebananabatcatcorndate、とdog、どこの動物名がサブディレクトリがあり、果物/野菜の名前がファイルです-あなただけのファイルを取得するために使用するどのようなコマンド?または、それはあなたが意図したものではありませんか?(2)  du -sh .ファイル自体ではなく、現在のディレクトリ内およびその下のすべての総計のみを報告します。これは、質問が求めたものと正反対です。
G-Manが「Reinstate Monica」と言う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.