(Powershell) 指定されたディレクトリの最新のファイルから特定文字列が含まれているかを判定するワンライナー

経緯

表題の通りですが、 PowerShell で

  • 指定されたディレクトリに複数のテキストファイルが存在している
  • その中の最新のファイルの中で、
  • 特定の文字列が含まれているかどうかを判定する

ということをやりたくなったのでメモ。

スニペット

# カレントディレクトリのサブディレクトリ「log」の中の最新のファイルの中から「境界記録帯」という文字列が含まれているかどうかを判定し、 Boolean で返す
(Get-Content -Path (Get-ChildItem .\log | Sort-Object LastWriteTime -Desc)[0].FullName -Encoding default | Where-Object {$_ -like "*境界記録帯*"}).Length -gt 0

できたワンライナーがこちら。コメントの通り .\log というディレクトリ(カレントディレクトリから見て log という名前のサブディレクトリ)にある最新のファイルの中から「境界記録帯」という文字列が含まれているかどうかを判定します。

含まれていれば長さが 0 より大きくなるので、式は指定文字列が含まれていれば True, 含まれていなければ False となります。

条件をガチガチに固めてはいるのですが、それでいてワンライナーで済んだ、というのが少し驚きです。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。