#navi(../)
* ファイル数を取得する方法 [#t7485a02]
#contents
ディレクトリに存在するファイル数や特定の拡張子を持つファイル数、カレントディレクトリ以下のディレクトリ内に存在するファイル数や特定拡張子を持つファイル数の取得方法を以下に記します。
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* lsとwcコマンドを利用する [#x57fcef3]
wcコマンドに-lオプションを使用すると行数を取得することができます。~
つまり、検索した結果の行数を取得すればファイル数を取得することができます。~
** lsコマンドとwcコマンドを利用してファイル数を取得 [#kf92d8f2]
以下にlsコマンドとwcコマンドを利用した例を記します。
lsコマンドに-1オプションを利用し1ファイル1行として表示するようにします。
$ ls -1
a.csv
a.txt
b.csv
b.txt
c.csv
c.txt
ls -1が出力した行数を取得すればファイル数になりますね。~
ls -1とwc -lをパイプでつなげて動作させた結果です。
$ ls -1 | wc -l
6
ディレクトリが存在していてディレクトリをカウントから除きたい場合は以下のようにすれば良いと思います。~
以下にls, wc, grepコマンドを利用し動作させた結果を記します。
-ディレクトリfoo, barが存在してます。(-Fオプションにてディレクトリの場合、最後に/をつけるようにしました。)
$ ls -1F
a.csv
a.txt
b.csv
b.txt
bar/
c.csv
c.txt
foo/
-grep -vコマンドにより / を含む行を対象外にしました。
$ ls -1F | grep -v /
a.csv
a.txt
b.csv
b.txt
c.csv
c.txt
- ls, grep, wcを組み合わせ取得したファイル数です。(ディレクトリがカウントから除かれています)
$ ls -1F | grep -v / | wc -l
6
* findとwcコマンドを利用する [#j39c1a64]
findを利用すれば、カレントディレクトリ以下のファイルも対象にしたりなどすることができます。
** findとwcコマンドを利用してファイル数を取得する [#cbf7be2e]
lsコマンドと同様にfindで対象となったファイルの行数をwcコマンドで取得します。~
テストしたファイルおよびディレクトリは以下の通りです。
$ find ./
./
./a.txt
./a.csv
./foo
./foo/aa.csv
./foo/aa.txt
./bar
./bar/aa.csv
./bar/aa.txt
- csvファイルのファイル数を取得する
上記のfind ./の出力を見ると、カレントディレクトリにa.csv, fooディレクトリにaa.csv,
barディレクトリにaa.csv、計3つcsvファイルが存在していることがわかります。~
findコマンドを利用してcsvファイル数を取得してみます。
$ find ./ -name "*.csv" | wc -l
3
#br
注意: -name の後ろの引数に*.csvなどとする場合は、ダブルクオート(''"'')またはシングルクオート(''''')で囲んでください。~
または、ダブルクオート、シングルクオートを利用したくない場合は、*の前にバックスラッシュ(''\'')を入れてください。~
そうしないと、上記の環境の場合、カレントディレクトリにあるa.csvが展開されa.csvしか対象になりませんので、ご注意を。
* 関連資料 [#hd2f86c9]
-[[逆引きUNIXコマンド/ファイルを探す・findコマンド]]
-[[逆引きUNIXコマンド/ファイルを除くディレクトリ一覧を取得したい]]
-[[逆引きUNIXコマンド/lsコマンド・ディレクトリ内のファイルを表示しないようにする]]
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)