特定のユーザーが所有するすべてのファイルの合計サイズを見つけようとします。
これを行うと、他のコマンドを実行するとサイズが異なります。
特定のユーザーが所有するすべてのファイルの合計サイズを正しく調べるコマンドは何ですか?
$ find . -type f -user silviya|ls -lh|head -1
total 68K
$ find . -type f -user agalya|wc -c
284
$ find . -type f -user agalya|du -sk
120 .
このような変化の理由は何ですか?
ベストアンサー1
存在する:
find . -type f -user silviya|ls -lh|head -1
find
toの出力をパイピングしls
ますが、ls
入力を読みません。リストするファイルのリストを引数として使用します。ここに同じ引数がない場合、現在のディレクトリに隠されていないファイルが一覧表示されます。したがって、ここでは現在のディレクトリに隠されていないすべてのファイル(すべての種類)のディスク使用量を取得できます(与えられたファイルのサイズは各ハードリンクに対して計算されます)。
存在する:
find . -type f -user agalya|wc -c
出力からバイトを計算するため、find
これはディスク使用量やファイルサイズではなく、ファイルパス(および改行区切り文字)のサイズです。
存在する:
find . -type f -user agalya|du -sk
ls
同様に、du
ファイルのリストを入力ではなく引数として使用します。したがって、ここでは、現在ディレクトリにあるすべてのファイルとディレクトリのディスク使用量を(再帰的に)取得できます。
GNUユーティリティを使用して、すべての一般ファイルのディスク使用量を確認するには、agalya
次の手順を実行します。
find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1
--files0-from
標準入力(ここに表示)からファイルのリストを取得するように指示しますdu
(GNUのみ)。累積サイズを提供します(同じファイルへのハードリンクは一度だけカウントされます)。du
-
-c
ファイルのインポート確かにディスク使用量の代わりにサイズにこの--apparent-size
オプションを追加しますdu
(やはりGNUによって異なります)。-l
ハードリンクを数回計算するオプション(GNUのみ)を追加します。