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

Linuxでファイルを再帰的にカウントする高速な方法

解決策 1:

これが専用のファイルシステムにある場合、または一定数のファイルのオーバーヘッドがある場合は、「 df -i":

[email protected]:~# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75885 60413843    1% /

上記のテスト ボックスでは、75,885 個の inode が割り当てられています。ただし、これらの inode は単なるファイルではなく、ディレクトリでもあります。例:

[email protected]:~# mkdir /tmp/foo
[email protected]:~# df -i /tmp 
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75886 60413842    1% /
[email protected]:~# touch /tmp/bar
[email protected]:~# df -i /tmp
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75887 60413841    1% /

注:すべてのファイル システムが同じ方法で inode カウントを維持するわけではありません。 ext2/3/4 はすべて機能しますが、btrfs は常に 0 を報告します。

ファイルとディレクトリを区別する必要がある場合は、ファイルシステムを調べて、それぞれを「統計」して、ファイル、ディレクトリ、シンボリックリンクなどであるかどうかを確認する必要があります...ここでの最大の問題はそうではありませんすべてのテキストを "wc" にパイプしますが、すべての inode とディレクトリ エントリを検索してそのデータをまとめます。

「df -i」で表示される inode テーブル以外に、特定のディレクトリの下にいくつのファイルがあるかを示すデータベースは実際にはありません。ただし、この情報が重要な場合は、プログラムがこのディレクトリにファイルを作成するときに番号を増やし、削除するときに番号を減らすことで、このようなデータベースを作成および維持できます。それらを作成するプログラムを制御しない場合、これはオプションではありません。

解決策 2:

この StackOverflow の質問に対して、カスタム ファイル カウント プログラムを作成しました:https://stackoverflow.com/questions/1427032/fast-linux-file-count-for-a-large-number-of-files

参照、ダウンロード、または貢献したい場合は、ここで GitHub リポジトリを見つけることができます:https://github.com/ChristopherSchultz/fast-file-count

解決策 3:

ディレクトリ内のファイル数を再帰的にカウントしたい場合は、locate コマンドは私が知っている最速のものです。最新のデータベースがあると仮定します(毎日cronジョブを介してデフォルトでsudo更新データベースが作成されます)。ただし、 grepを回避すると、コマンドを高速化できます パイプ。

マンロケートを見る :

-c, --count
       Instead  of  writing  file  names on standard output, write the number of 
       matching entries only.

したがって、最速のコマンドは次のとおりです:

locate -c -r '/path/to/dir'

Linux
  1. Linux と Android の間で高速かつ信頼性の高い方法でファイルを転送する方法は?

  2. Linux で ext-filesystems が使用するスペースを少なくする方法はありますか?

  3. Linux で inode 数を増やすことはできますか?

  1. Linuxで開くファイルの数の制限を増やす方法

  2. Linux でのファイル/ディレクトリの最大数は?

  3. Linux ディレクトリ内のファイルを再帰的にカウントする

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

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

  3. 隠しファイルを再帰的にコピーする - Linux