経緯
表題の通りですが、 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 となります。
条件をガチガチに固めてはいるのですが、それでいてワンライナーで済んだ、というのが少し驚きです。