Linuxのディレクトリ内のファイル数をカウントするコマンドや、
サブディレクトリ内のファイル数も含めて再帰的にカウントするコマンドを紹介します
結論
カレントディレクトリのファイル数を出力する場合は下記コマンドを実行します
カレントディレクトリのサブディレクトリ内のファイル数も含めて出力する場合は
下記コマンドを実行します
具体例
下記の通りのディレクトリで実際にファイル数を取得していきます
tempディレクトリにはtxtファイルが5つ、ディレクトリを1つ配置しており
temp_2ディレクトリにはtxtファイルを3つ配置しています
tempディレクトリ直下でファイル数を取得します
temp直下のファイル数を取得できました
この時サブディレクトリのファイル数は含まれていません
次にサブディレクトリ内のファイル数を含めたファイル数を取得します
サブディレクトリのファイル数も含めて取得できました
解説
各コマンドの詳細を解説していきます
lsコマンド
ファイルやディレクトリの情報を表示するコマンドです
以下に今回使用しているオプションを記載します
-U オプション
このオプションはファイルを並び替えることなく、ディレクトリに含まれている要素順で表示します
ディレクトリ内のファイル数が膨大な場合に高速化に繋がります
-R オプション
対象のディレクトリのサブディレクトリの情報も再帰的に表示します
上記例のようにサブディレクトリ内の情報が表示されます
-F オプション
情報を付加するコマンドです
ディレクトリ名の後に /
を、バイナリファイルに
*
を付加します
上記のようにディレクトリの後に/が付加されます
grepコマンド
対象となるファイルや出力から文字列を検索するコマンドです
以下に今回使用しているオプションを記載します
-v オプション
対象となるファイルや出力から一致しない文字列を検索します
本記事のコマンドではlsコマンドの出力に対してgrepを使用しています
このgrepコマンドは正規表現を使用できます
本記事のサブディレクトリまで含めてファイル数を取得する際の正規表現は下記を意味しています
| はOR検索を意味しています
エスケープを含めて
\|
と表現します
^\s*$
は行頭から行末まで全て空白であることを意味しています
^
が行頭を
\s
が空白文字を
*
が0回以上の繰り返しを
$
が行末を意味しています
wcコマンド
ファイルや出力の行数や単語数等を数える(word count)するコマンドです
以下に今回使用しているオプションを記載します
-l オプション
対象となるファイルや出力から改行の数をカウントします
本記事のコマンドではgrepコマンドの出力に対してwcコマンドを使用しています
grepに正規表現が含まれるため若干コマンドが複雑になりますが
その代わりにディレクトリ数を含めず正確にファイル数を取得できるメリットがあります
0 件のコメント :
コメントを投稿