常に右往左往

取り留めのない感じで色々と

【PowerShell】フォルダ配下のファイル内の特定の文字列をカウントする

見積作業内でリソースの分析として、あるフォルダ配下のファイルに対して特定の文字列の件数をカウントする必要が出たのでPowerShellで処理できないかと思い調べてみるとありがたい記事があった。

excel.wp.xdomain.jp

早速作ってみよう

対象とするフォルダ内には下記の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


Avicii - Lonely Together ft. Rita Ora