PowerShellで特定フォルダ配下のファイル一覧を取得する【Get-ChildItem】

使用できるPowerShellコマンドレット

  • Get-ChildItem
  • dir
  • ls

[目次]

使用例

カレントディレクトリ直下のファイルおよびフォルダを取得

PS C:\work\test> Get-ChildItem


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/03/03     21:42                A
-a----       2020/03/03     21:42              0 memo_abc.txt
-a----       2020/03/03     21:42              0 memo_def.txt

カレントディレクトリ配下のサブディレクトリを含むすべてのファイルとフォルダを取得

PS C:\work\test> Get-ChildItem -Recurse


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/03/03     21:55                A
-a----       2020/03/03     21:42              0 memo_abc.txt
-a----       2020/03/03     21:42              0 memo_def.txt


    ディレクトリ: C:\work\test\A


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/03/03     21:42              0 秘密のmemo_abc.txt
-a----       2020/03/03     21:42              0 秘密のmemo_def.txt

名前に「abc」を含むファイルおよびフォルダを取得(サブフォルダ含む)

PS C:\work\test> Get-ChildItem -Recurse -Filter *abc*


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/03/03     21:42              0 memo_abc.txt


    ディレクトリ: C:\work\test\A


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/03/03     21:42              0 秘密のmemo_abc.txt

名前に「abc」を含まないファイルおよびフォルダを取得(サブフォルダも含む)

PS C:\work\test> Get-ChildItem -Recurse -Exclude *abc*


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/03/03     21:55                A


    ディレクトリ: C:\work\test\A


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/03/03     21:42              0 秘密のmemo_def.txt


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/03/03     21:42              0 memo_def.txt

使用可能なオプション

オプション用途備考
-Path 取得対象のパスを指定する指定しなかった場合はカレントディレクトリを取得する
-Recurse サブフォルダを再帰的に取得する指定しなかった場合は直下のディレクトリのみを取得する
-Filter 取得したいパスを指定ワイルドカード「*」使用可能
-Exclude 除外したいパスを指定 ワイルドカード「*」使用可能

詳細説明

冒頭に3つのコマンドを示しましたが、「Get-ChildItem」はPowerShell固有のコマンドレットで、dirとlsはそれぞれDOSコマンド、Unixコマンドだが、エイリアスとして用意されているので、どれを利用してもよい。


取得したいディレクトリを「-Path」で指定するとそのディレクトリ配下のファイルとディレクトリが取得できる。


さらに「-Recurse」オプションを付けると、そのディレクトリ配下全てのディレクトリを再帰的に取得できる。


また、特定の文字列を含んだものだけを取得したい場合は、「-Filter」でワイルドカードを用いて指定することができる。


逆に、特定の文字列を含みたくない場合は、「-Exclude」でワイルドカードを用いて指定することができる。

類似コマンド

  • Get-Item

Get-ChildItemと同じように指定したパスのアイテムを取得するコマンドだが、Get-Itemは「-Path」が必須オプションとなっている。

「-Path」に指定されたパスがファイルだったらファイルの情報を、ディレクトリだったら、ディレクトリ自体の情報を取得する。

また、「-Path」にワイルドカード指定で取得した場合は、Get-ChildItemと同様に特定の文字列を含むフォルダまたはディレクトリを一覧を取得することができる。