はじめに
日々のシステム運用やファイル管理ではLinuxディレクトリTree内の情報を一覧で取得し把握することが必要になる場面が多々あります。例えばOSの制限に抵触していないかなど。今回は各ディレクトリのファイル数、サブディレクトリ数、またファイルのパス長を抽出するためのコマンドラインを紹介します。
コマンドライン
以下にLinuxシステムでの各種情報抽出のための基本的なコマンドラインを示します:
- ファイル数のカウント
# find . -type d -print0 | while IFS= read -r -d '' dir; do echo "$dir: $(find "$dir" -maxdepth 1 -type f -print0 | grep -zc .)" file\(s\); done
- ディレクトリ数のカウント
# find . -type d -print0 | while IFS= read -r -d '' dir; do echo "$dir: $(( $(find "$dir" -maxdepth 1 -type d -print0 | grep -zc .) - 1 ))" dir\(s\); done
- ファイルパス長のカウント
# find . -type f -print0 | while IFS= read -r -d '' file; do echo "$file: ${#file}"; done
解説
それぞれのコマンドラインを詳しく解説します:
- ファイル数のカウント:このコマンドは現在のディレクトリから始めて全てのディレクトリ (
-type d
) を探し出します。それぞれのディレクトリについて直下のファイルの数 (-maxdepth 1 -type f
) をカウントします。 - ディレクトリ数のカウント:こちらも現在のディレクトリから全てのディレクトリを探し出します。そのうえで各ディレクトリについて直下のサブディレクトリの数をカウントします。ただしそのディレクトリ自体もカウント対象となるため、その数から1を引いています。
- ファイルパス長のカウント:全てのファイルを探し出しそのファイルのパスの長さをカウントします。ここでパスの長さとはファイル名を含む全体のパスの文字数を指します。
まとめ
Linuxシステム上でディレクトリTree配下の各種情報を抽出するためのコマンドラインは日々の運用やデバッグ作業またファイルの整理や分析において非常に役立ちます。この記事で紹介したコマンドラインを使って各ディレクトリのファイル数、サブディレクトリ数、またファイルのパス長を簡単に取得することができます。これらのコマンドラインをぜひ日々の作業に活用してみてください。