GNU/Linux >> Linux の 問題 >  >> Linux

サイズではなくファイル/ディレクトリの数をカウントする du

du --inodes を見つけました 便利ですが、du のどのバージョンかわかりません それは必要です。 Ubuntu 17.10 では、次のように動作します:

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

| sort -nr と組み合わせる 含む inode の数で降順​​にソートします。


最も簡単な方法は find /path/to/search -ls | wc -l のようです

検索は、すべてのファイルとフォルダーを検索するために使用されます。
-ls すべての名前をリスト (印刷) します。これはデフォルトであり、省略してもほとんどすべてのシステムで同じように機能します。 (ほとんどの場合、一部のデフォルトは異なる場合があります)。ただし、これを明示的に使用するのは良い習慣です。

find /path/to/search -ls だけを使用する場合 すべてのファイルとディレクトリが画面に出力されます。


wc 語数です。 -l オプションは、行数をカウントするように指示します。

いくつかの方法で使用できます。例:

  • WC テストファイル
  • cat テストファイル |トイレ

最初のオプションでは、wc がファイルを開き、そのファイル内の行数、単語数、および文字数を数えます。 2 番目のオプションは同じことを行いますが、ファイル名を指定せずに stdin から読み取ります。


コマンドをパイプ | で組み合わせることができます .最初のコマンドからの出力は、2 番目のコマンドの入力にパイプされます。したがって、find /path/to/search -ls | wc -l find を使用してすべてのファイルとディレクトリを一覧表示し、出力を wc にフィードします。次に、Wc は行数を数えます。

(別の代替手段は `ls | wc' でしたが、find ははるかに柔軟で、学習するのに適したツールです。)

[コメント後に編集]

find と exec を組み合わせると便利かもしれません。

例えば。 find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \; / 内のすべてのディレクトリを一覧表示し、検索したくないディレクトリを除外します。それらのそれぞれで前のコマンドをトリガーして、/ 内のフォルダーごとのファイルの合計を生成できます。

ただし:

<オール>
  • これは GNU 固有の拡張子 -maxdepth を使用します。
    Linux では動作しますが、Unix のようなものでは動作しません。
  • サブディレクトリごとに複数のファイルが実際に必要になるのではないかと思います.

  • 次の PHP スクリプトがこのトリックを実行します。

    #!/usr/bin/php
    <?php 
    
    function do_scan($dir, $dev) {
      $total = 1;
    
      if (\filetype($dir) === 'dir' && \lstat($dir)['dev'] == $dev) {
        foreach (\scandir($dir) as $file) {
          if ($file !== '.' && $file !== '..') {
            $total += do_scan($dir . \DIRECTORY_SEPARATOR . $file, $dev);
          }
        }
    
        print "$total\t$dir\n";
      }
    
      return $total;
    };
    
    foreach (\array_slice($argv, 1) as $arg) {
      do_scan($arg, \lstat($arg)['dev']);
    }
    

    それをファイルに入れます(たとえば、「treesize」 ")、chmod +x それを ./treesize . | sort -rn | less で実行します .


    Linux
    1. 最大のファイルまたはディレクトリを見つけますか?

    2. サイズと拡張子でファイルを検索する方法は?

    3. 多数のXmlファイルを再フォーマットしますか?

    1. Linuxで1GBサイズを超えるすべてのファイルを見つける方法は?

    2. 各ディレクトリ内のファイル数を数える方法は?

    3. X よりも古いすべてのファイルを含むディレクトリを検索しますか?

    1. ディレクトリとサブディレクトリ内のファイル数を見つける方法

    2. プロのようにLinuxでファイルとディレクトリを探す

    3. 大量のファイルをすばやく削除する方法