【PowerShell】フォルダ配下のファイル内の特定の文字列をカウントする
見積作業内でリソースの分析として、あるフォルダ配下のファイルに対して特定の文字列の件数をカウントする必要が出たのでPowerShellで処理できないかと思い調べてみるとありがたい記事があった。
早速作ってみよう
対象とするフォルダ内には下記の2つのファイルがあるとする 。 その中からhogeの数をファイル単位でカウントしてみよう。
foo.text
hoge hoge fuga hoge hoge fuga hoge hoge
bar.text
hoge fuga hoge fuga hoge
実行するコマンドは下記の通り。
#検索フォルダ指定 $path = "E:\work\PowerShell\文字列カウント" #検索ファイル一覧を取得 $fileList = Get-ChildItem -Path $path #ファイル毎にループする foreach($fileTmp in $fileList) { #ファイル名と項目名(hoge)の件数をカウント echo $fileTmp.Name,(Select-String “hoge” $fileTmp).Count }
実行結果は・・・
bar.txt 3 foo.txt 6
無事取得したい内容が取得できた。
これに加えて
行数も調査する必要があったのでちょいと世界に聞いてみたところまたありがたい記事があった。
PowerShell/テキストファイルの行数を取得する方法・Get-Content - Windowsと暮らす
対象のファイルは先に利用したファイルにしよう。 実行するコマンドは下記の通り。
#検索フォルダ指定 $path = "E:\work\PowerShell\文字列カウント" #検索ファイル一覧を取得 $fileList = Get-ChildItem -Path $path #ファイル毎にループする foreach($fileTmp in $fileList) { #ファイル名と項目名(hoge)の件数をカウント echo $fileTmp.Name,(Get-Content $fileTmp.fullname).Length }
さて実行結果は
bar.txt 5 foo.txt 8
無事取得できた。
これらのおかげでかなり作業量が短縮できたので他のタスクに集中できたわ~。
今日のところはこんな感じで。
【今週の一曲】
先日Aviciiが亡くなったとのニュースが報じられましたね・・・まじかよって思わずいってしまいました。
Avicii・・・R.I.P