Bash でディレクトリ内のファイルを数える
ディレクトリ内のファイル数のカウントは Bash の一般的なタスクであり、この操作を実行するためにいくつかの異なるツールとメソッドを使用できます。 一般に、適切な方法は、ファイルのサイズとタイプ、パフォーマンスとメモリの要件、出力形式と出力先など、タスクの特定の要件と制約によって異なります。
find
コマンドを使用して Bash のディレクトリ内のファイルをカウントする
ファイルシステム内のファイルを検索およびフィルタリングするために使用できる多目的で機能的なツールである find
コマンドを使用できます。 find
コマンドには、ファイルの名前、タイプ、サイズ、変更時刻などの検索基準を指定できるいくつかのオプションと機能があります。
たとえば、特定のディレクトリ内のファイルをカウントするには、次のコマンドを使用できます。
find . -type f | wc -l
このコマンドは、find
コマンドを使用して現在のディレクトリ (.
) 内のファイルを検索し、-type f
オプションを指定して、通常のファイルのみに一致するようにします。
find
コマンドの出力は、一致したファイルの名前のリストで、1 行に 1 ファイルです。 次に、出力は wc
コマンドにパイプされます。このコマンドは、入力の行数をカウントし、結果を端末に出力します。
find
コマンドは、ディレクトリ内のファイルをカウントするための便利なツールであり、ほとんどの一般的なシナリオに適しています。 ただし、検索基準を指定する必要があるなど、いくつかの制限と欠点があり、入力によっては複雑でエラーが発生しやすくなります。
さらに、find
コマンドは、多くのファイルを含む大規模なディレクトリでは遅くなり、メモリを大量に消費する可能性があり、一部のファイル名とタイプでは期待どおりの結果が得られない場合があります。
ls
コマンドを使用して Bash のディレクトリ内のファイルをカウントする
Bash でディレクトリ内のファイルをカウントするもう 1つの方法は、ls
コマンドを使用することです。これは、ディレクトリの内容を一覧表示するシンプルで基本的なツールです。 ls
コマンドには、長い形式のリストを表示する -l
オプションや、サブディレクトリとそのファイルを再帰的にリストする -R
オプションなど、その動作を制御し、その出力をカスタマイズできるいくつかのオプションと機能があります。 .
たとえば、現在の作業ディレクトリとそのサブディレクトリ内のファイル数をカウントするには、次のコマンドを使用できます。
ls -lR | grep -c '^-'
このコマンドは、ls -lR
コマンドを使用して、現在の作業ディレクトリとそのサブディレクトリのファイルとディレクトリを一覧表示し、各ファイルの長い形式の一覧を表示します。
ls
コマンドの出力は、ファイルとディレクトリの名前と属性のリストで、1 行に 1 ファイルです。 出力は grep
コマンドにパイプされ、正規表現 '^-'
を使用して入力がフィルター処理されます。
この正規表現は、-
文字で始まるすべての行に一致します。これは、ls
コマンドの長い形式のリストの通常ファイルに対応します。
grep
コマンドは、入力内の一致した行の数をカウントし、結果を端末に出力します。 grep
コマンドの -c
オプションにより、一致した行自体の出力が抑制され、一致した行のカウントのみが出力されます。
これにより、ls
コマンドの出力がより簡潔で効率的になり、ディレクトリ内のファイルをカウントするのに役立ちます。
ls
コマンドは、ディレクトリ内のファイルをカウントするためのシンプルで効率的なツールであり、ほとんどの一般的なシナリオに適しています。 ただし、柔軟性に欠け、検索条件や出力形式を制御できないなど、いくつかの制限と欠点があります。
さらに、ls
コマンドは、一部のファイル名とタイプに対して期待される結果を提供しない場合があり、多くのファイルを含む大きなディレクトリでは速度が低下し、メモリを大量に消費する可能性があります。
結論として、Bash でディレクトリ内のファイルをカウントするにはいくつかの方法があり、適切な方法はタスクの特定の要件と制約によって異なります。 find
コマンドは、ファイルをカウントするための便利で柔軟なツールであり、ls
コマンドは、この目的のためのシンプルで効率的なツールです。
どちらのコマンドにも長所と短所があり、これらを一緒に使用したり、他のツールと組み合わせて使用したりして、タスクに望ましい結果をもたらすことができます。
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn