Get-ChildItemの使い方:ファイルやディレクトリを一覧表示する

広告

Get-ChildItem コマンドレットを使用すると、指定したパスにあるファイルやディレクトリを一覧表示できます。ファイルの確認や検索によく使用されるコマンドレットです。条件を指定して一致するものだけを表示したり、サブディレクトリも含めて再帰的に検索することも可能です。ここでは PowerShell における Get-ChildItem コマンドレットの使い方について解説します。

Get-ChildItemコマンドレットの書式

Get-ChildItem コマンドレットは、指定したパスにあるファイルやディレクトリを一覧表示することができます。(Get-ChildItem は、 PowerShell で最もよく使用されるコマンドレットの 1 つです)。 Get-ChildItem コマンドレットの書式は次の通りです。

Get-ChildItem
  [[-Path] <string[]>]
  [[-Filter] <string>]
  [-Include <string[]>]
  [-Exclude <string[]>]
  [-Recurse]
  [-Depth <uint>]
  [-Force]
  [-Name]
  [<CommonParameters>]

Get-ChildItem はエイリアスとして dirgcils が定義されています。

dir -> Get-ChildItem
gci -> Get-ChildItem
ls -> Get-ChildItem

指定したパスに含まれるファイルとディレクトリの一覧を表示するには、 -Path オプションを使って次のように実行します。

Get-ChildItem -Path パス

-Path オプションは省略可能なので、通常は次のように実行します。

Get-ChildItem パス

それでは c:\code\python にあるファイルおよびディレクトリの一覧を表示します。次のように実行してください。

Get-ChildItem c:\code\python

Get-ChildItemコマンドレットの使い方(1)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\python

    Directory: C:\code\python

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/12     0:02                ext
-a---          2022/09/19    18:16             91 sample.py
-----          2026/04/12     0:00            463 user.py

Mode の列にはファイルやディレクトリの属性が表示されます。先頭が d の場合はディレクトリ、l の場合はリンクを表します。それ以外はファイルで、他の文字は属性(読み取り専用や非表示など)を示しています。(a はファイルが作成や更新されてから、まだバックアップされていないという意味になります。現在は特に気にする必要はありません)。

l : リンク
d : ディレクトリ
a : アーカイブ
r : 読み取り専用
h : 非表示
s : システム

なお今回はパスに対象となるディレクトリ名までを指定しましたが、この場合はパスの最後にワイルドカードのアスタリスク(*)が指定されたのと同じです。次の 2 つのコマンドは同じ結果になります。

Get-ChildItem c:\code\python
Get-ChildItem c:\code\python\*

通常はアスタリスクを記述する必要はないのですが、 -Include オプションを使用する場合はアスタリスクを明示的に指定する必要があります。(後ほど解説します)。

またパスを省略した場合はカレントディレクトリ(.)が指定されたものとして扱われます。そのため、パスを指定せずに Get-ChildItem を実行すると、カレントディレクトリにあるファイルとディレクトリの一覧が表示されます。

Get-ChildItem

Get-ChildItemコマンドレットの使い方(2)

※ カレントディレクトリとは、現在操作しているフォルダーのことです。先ほどは C:\code\powershell でコマンドを実行したため、このフォルダー内にあるファイルやディレクトリの一覧が表示されました。

ファイルやディレクトリの名前だけを表示する

Get-ChildItem では、 -Name オプションを使用することで、ファイルやディレクトリの名前だけを表示することができます。

Get-ChildItem パス -Name

それでは実際に試してみます。次のように実行します。

Get-ChildItem c:\code\powershell -Name

Get-ChildItemコマンドレットの使い方(3)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -Name
doc
img
ext.ps1
test.ps1

ディレクトリ名とファイル名だけを表示しました。

-Name オプションでは、フルパスではなく名前のみが表示されます。スクリプトなどでファイル名だけを対象に処理を行いたい場合によく使用されます。

ファイルまたはディレクトリだけを表示する

Get-ChildItem はファイルおよびディレクトリの両方を表示しますが、 -File オプションを使用することでファイル名のみを、 -Directory オプションを使用することでディレクトリ名のみを表示することができます。

Get-ChildItem パス -File
Get-ChildItem パス -Directory

それでは実際に試してみます。 2 つのコマンドを順番に実行します。

Get-ChildItem c:\code\powershell -File
Get-ChildItem c:\code\powershell -Directory

Get-ChildItemコマンドレットの使い方(4)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -File

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1
PS C:\code\powershell> Get-ChildItem c:\code\powershell -Directory

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/11    23:59                doc
d----          2026/04/11    23:58                img

ファイルのみ、またはディレクトリのみを表示しました。

サブディレクトリの中も再帰的に調べる

Get-ChildItem は指定したパスのファイルおよびディレクトリを表示するだけでなく、サブディレクトリにあるファイルやディレクトリも含めて表示することができます。

-Recurseオプション

-Recurse オプションを使用すると、指定したパスにディレクトリが含まれていた場合、そのディレクトリの中にあるファイルやディレクトリも表示します。これを再帰的に繰り返します。

Get-ChildItem パス -Recurse

それでは実際に試してみます。次のように実行します。

Get-ChildItem c:\code\powershell -Recurse

Get-ChildItemコマンドレットの使い方(5)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -Recurse

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/11    23:59                doc
d----          2026/04/11    23:58                img
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1

    Directory: C:\code\powershell\doc

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/11    23:59                back
-a---          2026/04/11    23:59           6595 address.txt
-a---          2026/04/11    23:30           1315 name.ps1

    Directory: C:\code\powershell\doc\back

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2026/04/11    23:59           4121 address_old.txt

    Directory: C:\code\powershell\img

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2026/04/03    17:33          10977 circle.png
-a---          2026/04/03    17:31           9819 default.png

指定したパスに含まれるファイルとディレクトリ、およびサブディレクトリ中にあるファイルやディレクトリをそれぞれディレクトリごとに表示します。

-Depthオプション

再帰的ではないですが、 -Depth オプションを使用することで、指定した階層までサブディレクトリにあるファイルやディレクトリを表示します。

Get-ChildItem パス -Depth レベル

レベルは 0 を指定すると現在のディレクトリのみで、サブディレクトリは表示されません。レベルに 1 を指定すると 1 つ下のサブディレクトリ、レベルに 2 を指定すると 2 つ下のサブディレクトリまで確認します。

それでは実際に試してみます。次のように実行します。

Get-ChildItem c:\code\powershell -Depth 0

Get-ChildItemコマンドレットの使い方(6)

実行結果は次のようになります。レベルに 0 を指定しているので、サブディレクトリは確認しません。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -Depth 0

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/11    23:59                doc
d----          2026/04/11    23:58                img
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1

次にレベルに 1 を指定して実行します。

Get-ChildItem c:\code\powershell -Depth 1

Get-ChildItemコマンドレットの使い方(7)

実行結果は次のようになります。レベルに 1 を指定しているので、 1 つ下のサブディレクトリは表示されますが、それ以降のサブディレクトリは存在しても表示しません。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -Depth 1

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/12    11:41                doc
d----          2026/04/11    23:58                img
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1

    Directory: C:\code\powershell\doc

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2026/04/11    23:59                back
-a---          2026/04/11    23:59           6595 address.txt
-a---          2026/04/11    23:30           1315 name.ps1

    Directory: C:\code\powershell\img

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2026/04/03    17:33          10977 circle.png
-a---          2026/04/03    17:31           9819 default.png

このようにすべての階層のディレクトリを確認したい場合は -Recurse オプションを使用し、指定した階層までのディレクトリを確認したい場合は -Depth オプションを使用してください。

条件に一致するファイルやディレクトリを表示する

Get-ChildItem では特定の条件を満たすファイルやディレクトリだけを表示することができます。

-Includeオプション

-Include オプションを使用すると、条件に一致するファイルやディレクトリだけを表示することができます。

Get-ChildItem パス -Include パターン

パターンには任意の長さの文字とマッチする * と任意の 1 文字とマッチする ? を使用できます。例えば拡張子が .txt のファイルだけを表示したい場合は、パターンに *.txt と指定してください。

Get-ChildItem パス -Include *.txt

パターンは複数指定することもできます。複数指定する場合は、カンマ(,)で区切って続けて記述します。複数指定した場合はいずれかのパターンと一致するファイルやディレクトリを表示します。

Get-ChildItem パス -Include *.txt,*.png

注意点として、 -Include オプションを使用する場合は、 -Recurse オプションと組み合わせるか、 -Path オプションの引数であるパスの最後にアスタリスク(*)を付ける必要があります。例えばパスを c:\doc とこれまで指定していた場合は c:\doc\* のように指定する必要があります。

それでは実際に試してみます。次のように実行します。

Get-ChildItem c:\code\powershell\* -Include *.ps1

Get-ChildItemコマンドレットの使い方(8)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\powershell\* -Include *.ps1

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1

拡張子が .ps1 のファイルだけが表示されました。

なお先ほどのコマンドは、 -Include を使用せずに次のように実行しても同じ結果となります。

Get-ChildItem c:\code\powershell\*.ps1

パスを指定するときに、直接対象となるファイルやディレクトリの条件を記述しています。この方法の方がシンプルで、処理速度の面でも有利なため、通常はこちらの方法を使用してください。

では -Include オプションはどのような場合に使用するかというと、複数のパターンに一致するファイルやディレクトリだけを表示したい場合に使用します。

-Filterオプション

-Filter オプションを使用すると、条件に一致するファイルやディレクトリだけを表示することができます。

Get-ChildItem パス -Filter パターン

パターンには任意の長さの文字とマッチする * と任意の 1 文字とマッチする ? を使用できます。例えば拡張子が .txt のファイルだけを表示したい場合は、パターンに *.txt と指定してください。

Get-ChildItem パス -Filter *.txt

-Include と似ていますが、-Filter はファイルシステム側で絞り込みを行うため、より高速に処理されます。

また -Include と異なり、 -Filter ではパターンを複数指定することができません。

それでは実際に試してみます。次のように実行します。

Get-ChildItem c:\code\powershell -Filter *.ps1

-Filter の場合は、パスの最後がアスタリスクになっている必要がありません。

Get-ChildItemコマンドレットの使い方(9)

実行結果は次のようになります。

PS C:\code\powershell> Get-ChildItem c:\code\powershell -Filter *.ps1

    Directory: C:\code\powershell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/05/31    17:01            185 ext.ps1
-a---          2026/04/11    23:30            637 test.ps1

拡張子が .ps1 のファイルだけが表示されました。

-Filter は高速に 1 つの条件で絞り込む場合に適しており、-Include は複数の条件で絞り込む場合に適しています。

Get-ChildItemを使った実際の例

Get-ChildItem を使用することで、指定したパスに含まれるファイルの一覧を取得できるため、ファイルを順に処理したい場合によく使用されるコマンドレットです。

次のサンプルはカレントディレクトリにあるファイルの一覧を変数に格納し、、 foreach を使用してファイルを 1 つずつ取り出して名前を変更するものです。

$targetFiles = Get-ChildItem -Path . -Filter "*.ps1"

foreach ($file in $targetFiles) {
  $newName = "back_" + $file.Name
  Rename-Item -Path $file.FullName -NewName $newName
}

※ 説明用の簡易的なサンプルです。同じ名前のファイルが既に存在する場合、エラーになるため注意してください。

非常に使用頻度が高いコマンドレットですので、使い方をぜひ覚えておいてください。

-- --

PowerShell における Get-ChildItem コマンドレットの使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。