ウェブサイト検索

Linuxでディレクトリ内のファイルを数える5つの方法


ファイルを手動でカウントするのに疲れましたか?隠れたファイルも含めて、すべて自動的にカウントします。

重要なポイント

  • "ls"コマンドはLinux上でファイルとディレクトリを一覧表示します。それを"wc -l"にパイプすることで、隠しファイルを含む総ファイル数とディレクトリ数をカウントします。
  • 「tree」コマンドは、ディレクトリ構造全体を再帰的に表示し、最後にファイルの数を要約します。「-a」オプションを追加すると、隠しファイルも表示されます。
  • 「find」コマンドに、-type、-mindepth、-maxdepthなどのオプションを使用すると、ファイルとディレクトリを再帰的にカウントできます。「-type f」を使用するとファイルのみをカウントし、「-type d」を使用するとディレクトリのみをカウントします。

Linuxのようなオペレーティングシステムを操作する際、ファイルの管理は基本的な作業の一つです。Linux管理者であれば、扱うファイルの数を想像してみてください。そして、ファイルが多くのディスクスペースを消費している場合、それは難しい問題になるでしょう。隠しファイルを含め、これらのファイルをカウントする方法についていくつか話し合いましょう。

なぜLinux上でファイルをカウントする必要があるのですか?

Linuxの管理者であるか、Linuxコマンドを始めたばかりの場合、最終的にはLinuxディレクトリ内のファイルを数える必要があります。システムのスペースを確保する必要があるか、システムファイルのバックアップを計画し、バックアップするデータ量を見積もる必要があるか、あるいは単にファイルを整理したいだけかもしれません。これは、すべてのLinuxユーザーが知っておくべき作業です。

作業中に、システムのinodeが不足してしまうことを想定してください。突然、「デバイスに空き容量がありません」という恐ろしいエラーに直面し、新しいファイルやディレクトリを作成できなくなります。その時が、袖をまくり上げて、ファイルやディレクトリの管理を行い、カウントする必要がある時です。幸いにも、これを実行するためのLinuxコマンドが存在します。

wcコマンドを使用して隠しファイルを含むファイルとディレクトリの数をカウントする

Linuxでは、lsコマンドを使用すると、すべてのファイルとディレクトリを一覧表示できます。このコマンドをwcコマンドとパイプ(|)で組み合わせると、隠しファイルを含むファイルとディレクトリの合計数が表示されます。

ファイルのカウントを始める前に、lsコマンドを使って~/HTGディレクトリ内の実際のファイルをリストアップしましょう。ここには、~/HTGメインディレクトリ内にある4つのサブディレクトリを含む合計10のファイルがあります。隠しファイルが1つ、テキストファイルが1つ、テストファイルが4つあります。

ファイルを一覧表示するには、ls -A を使用することをお勧めします。ls コマンドは -a オプションを使用すると、特別なエントリ(.)現在のディレクトリおよび(..)親ディレクトリを含むため、全体的にファイル数が増加します。

ファイルおよびディレクトリの数をカウントするには、最初にディレクトリに移動し、次のコマンドを実行します:

ls | wc -l

まず、lsコマンドは、~/HTGディレクトリ内のすべてのファイルとディレクトリをフォーマットオプションなしで一覧表示します。lsの出力は、ファイルとディレクトリ名のシンプルなリストで構成されており、各名前は別の行に表示されます。

ls コマンドでリストされたファイルの数を数えるために、その出力を wc -l コマンドにパイプしています (|)。wc コマンドは、これらのリストされたファイルをカウントし、ファイルの数を出力します。このコマンドが出力する数は9ですが、これは ~/HTG ディレクトリに存在する1つの隠しファイルを含まないためです。

私たちはlsコマンドで使用できる異なるオプションを持っています。例えば、ls -lは現在のディレクトリ内のファイルとディレクトリを長いリスト形式(-l)で表示します。これにより、各ファイルについての詳細情報、権限、所有者、サイズ、変更日が提供されます。

ls -l | wc -l

このコマンドは隠しファイルを含んでいませんが、長いリスト形式でディレクトリ自体(ここでは ~/HTG ディレクトリを表す .)のエントリを含んでいます。その結果、全体のカウントが1つ増加します。

リスト形式に関係なく一貫したカウントが欲しい場合は、特別なエントリ(.)現在のディレクトリと(..)親ディレクトリを除外するために、lsと一緒に-Aオプションを使用できます。カウントする際は次のようにします:

ls -A | wc -l

これは ls -l コマンドと同じカウントを提供するべきです。出力は 10 ですが、これはこのコマンドが隠しファイルを1つも含んでいるためです。

隠しファイル、親ディレクトリ(..)、および現在のディレクトリ(.)を合計に含めるコマンドが必要な場合は、wc コマンドと一緒に ls -a オプションを使用してください。

ls -a | wc -l

関連: Linuxでwcコマンドを使う方法

treeコマンドを使用してファイルおよびディレクトリの数をカウントする

すべてのサブディレクトリ内のファイルとディレクトリの数をカウントするには、tree コマンドを使用できます。tree コマンドは、ディレクトリ構造全体を再帰的に表示し、出力の最後に要約を表示します。

<directory> tree

treeコマンドが見つからないエラーが表示される場合は、以下のコマンドを使用してtreeコマンドをインストールしてください:

Ubuntu/Debianホストの場合: sudo apt install tree CentOS/RHELホストの場合: sudo yum install tree

デフォルトでは、treeコマンドは隠しファイルを表示しません。隠しファイルを表示するには、treeコマンドに-aオプションを使用してください:

tree -a

現在、隠しファイルを含むすべてのファイルがリストされ、カウントされています。

関連: Linuxでディレクトリツリーを移動する方法

findコマンドを使用して再帰的にファイルをカウントする

Linuxのfindコマンドは、-type、-mindepth、-maxdepthなどのさまざまなオプションを使用すると、簡単に再帰的なカウントを行うのに役立ちます。このコマンドは、各サブディレクトリに手動で移動して一つずつ数えなくても、ディレクトリ構造内のアイテムの合計数を決定します。

find <directory> <options> | wc -l

findコマンドは検索を再帰的に行います。なぜなら、デフォルトではすべてのサブディレクトリを順にカウントするからです。最初の深さで検索を止めることはありません。

ディレクトリ内のすべてのエントリ(ファイルとフォルダの両方)を数えるには、次のコマンドを使用します:

find HTG | wc -l

このコマンドは現在のディレクトリもカウントしますが、この場合は ~/HTG であり、検索結果を1つ増やします。

特定の条件がないfindコマンドは、デフォルトで通常のファイルと隠しファイルの両方を検索に含めます。

ファイルのみをカウントするには、次を使用します:

find HTG -type f | wc -l

現在のディレクトリを含むディレクトリのみをカウントするには、この場合は ~/HTG を使用します:

find HTG -type d | wc -l

findコマンドは、特定のパターン(".txt", ".pdf", ".sh")に一致するファイルを検索することもできます。

find . -type f -name "*.txt" | wc -l

このコマンドは、現在のディレクトリにある「.txt」拡張子で終わるファイルの数を出力します。

フォルダとそのサブフォルダ内のファイルをカウントしているとき、すべてのサブフォルダを調べることができない場合があり、そのためシステムは「アクセス権が拒否されました」というようなエラーを表示することがあります。

エラーメッセージを別の場所に転送するために「出力リダイレクション」と呼ばれる技術を使用できます。

find /etc -type f 2> /dev/null | wc -l

私たちは「mindepth」および「maxdepth」オプションを使用して検索結果を変更することもできます。

find HTG -mindepth 1 -maxdepth 1 | wc -l

この場合、-mindepth 1は検索が最小深度1から始まり、ルートディレクトリ自体をスキップして、その直下のサブディレクトリから検索が始まることを意味します。

-maxdepth 1オプションは、最大深度1で検索を行います。それは直接のサブディレクトリのサブディレクトリを探索しません。

関連: Linuxでfindコマンドを使う方法

BashスクリプトでLinuxディレクトリ内のファイルをカウントする

Linuxでは、Bashスクリプトを使用して繰り返し作業を自動化できます。ここでも同様に、Bashスクリプトを書き、ディレクトリを定義してその中にあるファイルの数をカウントすることができます。

与えられたbashスクリプトは、~/HTGディレクトリ内のすべてのファイルをカウントするためにwcとパイプ接続されたfindコマンドを使用しています。このスクリプトを実行すると、現在のディレクトリもカウントされるため、結果が1つ増えて11が出力されます。

#!/bin/bash
dir="HTG"
count=$(find "$dir"; | wc -l)
echo "There are $count files in the $dir directory."

findコマンドで説明されているように、最終的なカウントから特別なディレクトリを除外するには、findコマンドにオプションを追加してください。

GUIを使用してファイルをカウントする

KDEやGNOMEのようなデスクトップインターフェースを使ってLinux上のファイルを数えるのはとても簡単です!Windows上でファイルを数えるのと同じようなものです。

アクティビティメニューに行くか「ホーム」ディレクトリを使用して、ディレクトリまたはフォルダーを開いて確認してください。

フォルダーを右クリックして「プロパティ」オプションを選択してください。

フォルダー内のアイテムの合計数を表示する新しいウィンドウがポップアップします。

この方法は、すべてのアイテム(「テキストファイル」、「.shファイル」、「ディレクトリ」など)の合計数のみを表示し、個々のファイルをカウントしないことを覚えておいてください。少なくとも、UbuntuのデフォルトのファイルブラウザであるNautilusはそうですが、Dolphin Browserのような他のブラウザはより多くのデータを表示します。

ファイル数のカウントに必要な権限を確認してください

これらのコマンドを実行する際は、作業フォルダーに必要な権限が付与されていることを確認してください。権限エラーが発生した場合は、コマンドの前に「sudo」と入力してください。また、エラーが発生した場合はコマンドの構文を確認してください。これらのコマンドを最大限に活用するために、「man」コマンドを使用してそれぞれのヘルプガイドを参照してください。

関連記事: