もくじ
📝 はじめに
PowerShellでフォルダ内を確認していると、
「サブフォルダの中までまとめて一覧表示したい」
「手作業で深い階層を辿るのが大変」
と感じることはありませんか?
そんなときに活躍するのが
Get-ChildItem -Recurse です。
指定したフォルダ配下を再帰的(すべての階層)に一覧表示できるため、
調査・棚卸し・一括処理の下準備として非常によく使われます。
- サブフォルダを含めて全体を把握したい
- 特定の拡張子を一括で探したい
- 大量ファイルをまとめて処理したい
✅ このコマンドでできること(要点)
- サブフォルダを含めて再帰的に一覧取得できる
- すべての階層を自動的に探索できる
- Where-Object などで絞り込みできる
- 大量ファイルの一括処理に使える
✅ Get-ChildItem -Recurse でできること
-Recurse を付けることで、
Get-ChildItem は
指定したフォルダ配下のすべてのサブフォルダを自動的にたどります。
その結果、深い階層にあるファイルやフォルダも
1回のコマンドで一覧取得できます。
考え方としては「フォルダを上から下まで全部めくる」イメージです。
🧩 基本構文
Get-ChildItem -Recurse
パスを省略した場合は、現在の作業ディレクトリが対象になります。
▶ 基本的な使い方(まずこれだけ)
🔹 カレント配下をすべて一覧表示する
Get-ChildItem -Recurse
サブフォルダを含めたすべてのファイル・フォルダが表示されます。
この結果が表示されていれば問題ありません。
🔹 指定フォルダを再帰的に表示する
Get-ChildItem C:\Logs -Recurse
C:\Logs 配下のすべての階層が対象になります。
エラーが出なければ正常に動作しています。
🛠 よく使われる指定例
🔹 ファイルのみを再帰的に取得
Get-ChildItem -File -Recurse
フォルダを除外し、ファイルだけを一覧表示します。
🔹 特定の拡張子だけを検索
Get-ChildItem -Recurse -Filter "*.log"
すべての階層から .log ファイルのみを取得します。
💼 実務でよく使う使用例(応用)
🔹 更新日時が新しいファイルを探す
Get-ChildItem -Recurse |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
🔹 サイズの大きいファイルを調査する
Get-ChildItem -File -Recurse |
Sort-Object Length -Descending |
Select-Object -First 10
- -File / -Directory で対象限定
- Where-Object で条件検索
- Sort-Object で並び替え
🧩 よくある勘違い・つまずきポイント
- 対象が多いと処理に時間がかかる
- アクセス権限のないフォルダでエラーが出る
- サブフォルダの深さを制御できない
- 表示結果が多すぎて把握しづらい
- -Depth が使える環境と混同しやすい
🔄 cmdとの違いについて
cmd の dir /s と似ていますが、
PowerShell の Get-ChildItem -Recurse は
結果をオブジェクトとして扱える点が大きな違いです。
そのため、後続処理との連携が圧倒的に楽になります。
⚠ エラー・うまく動かないときの確認ポイント
- 対象フォルダが非常に大きくないか
- アクセス拒否のフォルダが含まれていないか
- 不要な再帰になっていないか
- -Filter や -File で絞り込めないか
🧠 注意点
-Recurse は非常に強力ですが、
無制限に再帰すると処理時間や負荷が大きくなります。
必要に応じて -Filter や
-Depth(PowerShell 6以降)を併用しましょう。
📌 まとめ
- -Recurse はサブフォルダを含めて一覧取得するための指定
- 大量ファイルの調査や一括処理に向いている
- 条件指定と組み合わせるのが実務では必須
- 次は -Depth を使った範囲制御もおすすめ
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- サブフォルダを含めて一覧表示したい
- 大量ファイルを一括で調査したい
