PowerShellでファイル一覧を絞り込む|Get-ChildItemのFile・Filter・Recurse
- 公開:2026.10.17
- 更新:2026.10.16
- Windows
ログを調べる前に、どのファイルがあるかだけを一覧にしたいことがあります。エクスプローラーでは下の階層や隠しファイルを見落としやすいとき、PowerShellのGet-ChildItemで場所と条件を指定できます。
以下はWindows PowerShell 5.1とPowerShell 7のファイルシステムで使う例です。作業フォルダーにlogs[demo]を用意し、直下にapp.logとnotes.txt、その下のarchiveにold.logがある構成で結果を説明します。
ファイルと拡張子を絞る
Get-ChildItem -LiteralPath '.\logs[demo]' -File -Filter '*.log' |
Select-Object Name, Length
この構成ではapp.logが表示されます。-Fileはファイルだけを選び、-Filterは名前の条件をファイルシステム側へ渡します。Lengthはバイト単位のファイルサイズで、サンプルの内容によって値が変わります。
フォルダー名の角括弧をパターンとして解釈させたくないので、場所の指定には-LiteralPathを使っています。場所をそのまま指定し、ファイル名の条件を-Filterへ分けると、役割が分かりやすくなります。
下の階層も一覧にする
Get-ChildItem -LiteralPath '.\logs[demo]' -File -Filter '*.log' -Recurse |
Sort-Object FullName | Select-Object Name
-Recurseを付けるとarchive内も検索され、app.logとold.logが対象になります。広いドライブ全体では処理量が増えるため、まず必要なフォルダーを指定すると調べやすくなります。同名のファイルを見分けたいときは、選択する項目にFullNameを加えてください。
隠しファイルを含める
Get-ChildItem -LiteralPath '.\logs[demo]' -File -Force |
Sort-Object Name | Select-Object Name
Windowsの隠し属性が付いたファイルも見たい場合は-Forceを使います。これはアクセス権を追加する引数ではありません。アクセスが拒否された場所は、そのまま読み取りできない場合があります。エラーを隠して「何もない」と判断しないことが大切です。
フォルダーだけを表示する
Get-ChildItem -LiteralPath '.\logs[demo]' -Directory |
Select-Object Name
サンプルではarchiveが表示されます。ファイルを探すときは-File、フォルダーを探すときは-Directoryを使うと、結果を後から振り分ける手間を減らせます。
相対的な名前だけを取得する
Get-ChildItem -LiteralPath '.\logs[demo]' -File -Filter '*.log' -Recurse -Name |
Sort-Object
app.log
archive\old.log
-Nameを付けると、ファイル情報オブジェクトではなく名前の文字列が返ります。再帰検索では基点からの相対的な名前になるため、サイズなどを後から選びたい場合は-Nameを付けない結果を使ってください。
一致するファイルがない場合、通常は結果が返りません。パスの誤りや読み取りエラーがある場合とは分けて調べます。一覧の後でログの本文を検索したい場合は、Select-Stringへ対象ファイルのパスを渡す流れになります。
参考資料
-
前の記事
PowerShellでパスを結合する|Join-Pathと存在確認の使い分け 2026.10.16
-
次の記事
Gitでステージを解除する|編集を残すgit restore –stagedの使い方 2026.10.17