• ベストアンサー

ディスクの使用サイズ表示の違い

UNIXコマンドであるディレクトリ配下のディスクの使用サイズを表示させようと思っています。 ・du -k ・find -lsでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) ・ls -Rでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) 上記3つで行いましたが、全て違う結果になりました。 なぜこの様な事になるのでしょうか? よろしくお願いいたします。

  • marru3
  • お礼率96% (185/192)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

du -k については#1さんの通り。また、ハードリンクについては実態が1つでもfind -ls や ls -lR では複数回表示されるのでこの分も違ってきます。 find -ls は全てのファイルをリストしますが、ls -lR は、. で始まるファイル/ディレクトリは表示しません。ls -lRa にすると . で始まるファイル/ディレクトリも表示しますが、今度はハードリンクのため親ディレクトリ .. も表示されるのでこの分がダブルカウントされます。

marru3
質問者

お礼

ご回答ありがとうございます。 ダブルカウントされてしまっていたのですね。 盲点でした。

その他の回答 (1)

noname#17587
noname#17587
回答No.1

duはディスク上のセクタ数を数えていて、 lsは実際のファイル内容のサイズをみるので結果は違うはず。 findは手ごろな資料が無くてわかりませんでした。

marru3
質問者

お礼

ご回答ありがとうございます。 セクタ数という事はブロック単位ですよね。

関連するQ&A

  • linux dfとduでdisk使用量が大きく違う

    お世話になります。 CentOS 6.2にてdfコマンドを使用したdisk使用量とduコマンドを使用したdisk使用量とで 結果が大きく異なります。 以下がコマンド実行時の結果です。何が考えられますでしょうか? ------------------------------------------------------------ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/root 146G 138G 12M 100% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda1 485M 36M 424M 8% /boot /dev/mapper/data 158G 1.4G 148G 1% /data /dev/mapper/home 146G 188M 138G 1% /home /dev/sdb1 1.8T 527M 1.7T 1% /mnt/usbhdd ------------------------------------------------------------ du -sh ./* 7.5M ./bin 26M ./boot 1.2G ./data 232K ./dev 23M ./etc 110M ./ftproot 176K ./home 2.5M ./lha-1.14i-ac20050924p1 120M ./lib 24M ./lib64 16K ./lost+found 4.0K ./media 332M ./mnt 4.0K ./opt du: cannot access `./proc/4152/task/4152/fd/4': No such file or directory du: cannot access `./proc/4152/task/4152/fdinfo/4': No such file or directory du: cannot access `./proc/4152/fd/4': No such file or directory du: cannot access `./proc/4152/fdinfo/4': No such file or directory 0 ./proc 80K ./root 14M ./sbin 4.0K ./selinux 4.0K ./srv 0 ./sys 13M ./tmp 682M ./usr 2.2G ./var --------------------------------------------------------- 又、削除済みでつかんだファイルは以下の様に表示されました。 ls -al /proc/*/fd/* | grep deleted ls: cannot access /proc/4265/fd/255: No such file or directory ls: cannot access /proc/4265/fd/3: No such file or directory ls: cannot access /proc/self/fd/255: No such file or directory ls: cannot access /proc/self/fd/3: No such file or directory

  • DUとLSの表示の差

    ファイルのパーミッション等が下記の場合が関係しているのか不明ですがDUコマンドとLSコマンドで示されるDiskの使用量が一致しないのですが、理由を教えていただけませんか? % cd test001 % ls -l total 944 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:11 File1 % % du 946 . % cd ../test002 % ls -l total 2049056 -rw-r-lr-- 1 own grp 524288000 Oct 17 14:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 12 21:16 File1 % % du 2049056 . DUの結果とLS -l で示される結果は一致しているのですが、ファイルサイズ(ls -lで示される値)の合計と一致しないのです。 OSはSolaris8です、よろしくお願いします。

  • dfコマンドが表示する使用領域サイズは、何の情報?

    dfコマンドが表示する使用領域サイズは、何の情報? お世話になります。 ファイルシステムのディスクの使用状況について、ご教授ください。 以下のディレクトリに対し、ディスクを割り当てています。 ディレクトリ名    割り当てサイズ /home         100(KB) /home/tmp      100(KB) /home直下には、tmpというディレクトリのみが存在する状態です。 サブディレクトリ(/home/tmp)配下に10KBのファイルを置いたとき、 ディスクの使用状況を見るには df -k /home/tmp で取得できると思います。 df -k /home としないのは、サブディレクトリに対してディスクを割り当てているため、 親ディレクトリに対して取得(df -k /home)しても使用状況に変化がなかったからです。 ここで質問なのですが、親ディレクトリに対してdfして得られる情報は、 具体的には何を意味しているのでしょうか? 数値に変化がないということが、何の情報を取得しているからなのかがわかりません。 参考サイトなど調べましたが、見つけることができませんでした。 ご教授いただければ幸いです。

  • lsの4096とディレクトリ容量計測方法について

    ls -la を実行すると サイズが4096というディレクトリ(test1とする)が多々見つかります。 またディレクトリによっては、0(test2とする)というのもありました。 ただ、test2ディレクトリの下に、file1というファイルがありサイズが10kでした。 【環境】 /root/test1(4096) /root/test2(0)   →file1(10K) /root/test3(4096) 【質問1】 ls -la で表示される4096とは何のことなのでしょうか? 【質問2】 ウインドウズのフォルダのように、ファイルサイズがディレクトリサイズに反映されてtest2に、 ディレクトリサイズが10kではなく、0と表示される理由は、なぜなのでしょうか? 【質問3】 各ディレクトリのサイズをlsで見れないとすれば、duコマンドで調べるしかないのでしょうか? 以上3点、 ご教授お願いします。

  • ディレクトリ一覧作成の高速化

    UNIXで / 配下のディレクトリ一覧をファイル出力することになりました。 今は # find / -type d > /tmp/hoge.txt としてますが、/ 配下のファイル数(ディレクトリも含む)が30万以上もあるため、 一覧を出力するだけで非常に時間がかかります。 ディスクは1マシン辺り30本程ついています。 (この規模のマシンが50台くらい) 後の方法は、ls でドバーっと出力して後からディレクトリだけを抽出する、という 感じくらいかなと思うのですが、もっと早く出力する方法があれば教えてください。 よろしくお願いします。

  • ディレクトリ一覧を表示

    unix環境で、ディレクトリやファイル一覧を表示するコマンドは「ls」ですが、 windows環境の「tree」コマンドのような視覚的に見やすく出力されるコマンドは ありませんか? また、lsコマンドではファイルも出力されますが、ディレクトリ構成だけの一覧を 出力する方法ってありますか?オプションを見てもちょっと無さそうなのですが・・

  • findの結果をlsで詳細表示

    はじめまして。 Linux初心者です。 カレントディレクトリ以下のディレクトリやファイルの一覧を詳細表示するには「find ./ | xargs ls -lF」などとすると思いますが xargsを使用せずに「find ./ | ls -lF」とすると、なぜNGなのでしょうか。「xargs」の意味を調べると、 (1) 標準入力から空白か改行で区切られた文字列群を読み込む。 (2) xargsの引数のコマンドの後ろに、標準入力から受け取った文字列群を付け足して、そのコマンドを実行する。 とありました。上記の説明で「xargs」を付けることによる効果はわかるのですが、ls以外のコマンドを使用する際にもfindと組み合わせる際には、 すべてのコマンドで「xargs」を使用しなければいけないのでしょうか。 lsの結果をmoreする際などには、「ls | more」で良いと思うのですが、 「ls | xargs more」としない理由がわかりません。 どなたかわかりやすく教えて頂ければ幸いです。 よろしくお願いします。

  • lsコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。

    ls -lコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。 ファイルの使用状況とはメモリの使用状況というイミなのかが確信が持てずにいます。 質問させていただければと思います。 どうかよろしくお願いします。

  • ファイルの拡張子だけを表示したい

    ファイルの拡張子だけを表示したい こんにちは。 Linuxのコマンドについて質問です。 とあるフォルダ配下にあるファイルをfindコマンドを使い検索し、そのフォルダ配下のファイルがどのような拡張子をもっているかを表示するコマンドを考えております。 たとえば、 /home/hoge/abc.xml /home/def.java /ghi.html /jkl.html というディレクトリとファイルがあったとして、ルートディレクトリからfindで検索をかけた場合、 .xml .java .html というように拡張子だけが抜き出されて表示される(重複した拡張子はのぞく)ようなコマンドです。

  • lsでのファイル名・パスのフルパス取得

    環境:Solaris10 lsコマンドでディレクトリ、ファイル名の一覧を取得しようとしています。 条件としては 1.対象は全てのディレクトリ・ファイル(ls -R) 2.実行結果はアクセス権・所有者の情報も含む(ls -lの結果のような) 3.ディレクトリ・ファイル名ともにフルパスで表示 この上記3点を満たそうとして、 ls -dlR / と実行してみましたが、この場合Rスイッチが有効になりませんでした。 OS標準コマンドでこの3点を満たすことは出来るのでしょうか?