Helve’s Python memo

Pythonを使った機械学習や最適化の備忘録

PowerShellでサブフォルダにあるファイル名を一覧表示する

PowerShellでサブフォルダを含むファイル名を一覧表示するには、 Get-ChildItem -Recurse -Name -Fileを実行する。 さらに、ファイル名で抽出する場合には-Filterオプションを追加する。 本記事では、上記のコマンドについて解説する。

目次

はじめに

動作を確認した環境は以下の通り。

バージョン
Windows 10 Home 1909
PowerShell 5.1.18362.752

なお、PowerShellのバージョンは、以下のコマンドで表示されるPSVersionの値から確認できる。

PS > $PSVersionTable

PowerShellの起動

エクスプローラ上でShiftキーを押しながら、 アプリケーションキーを押すと(またはマウスの右クリック)、 「PowerShell ウィンドウをここで開く(S)」が表示される。 これを選択すると、エクスプローラで開いているフォルダをカレントディレクトリとして、 PowerShellが起動する。

Get-ChildItemコマンドレットの基本

Get-ChildItemコマンドレットをオプションを付けずに実行すると、 カレントディレクトリにあるフォルダ・ファイルの一覧が表示される。

例:

PS > Get-ChildItem
    ディレクトリ: C:\Test

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/07/18     10:07                Subdir1
d-----       2020/07/18     10:07                Subdir2
-a----       2020/07/18     10:07             11 aaa.txt
-a----       2020/07/18     10:07              8 bbb.txt
-a----       2020/07/18     10:08             30 ccc.txt

ここで、Lengthはファイルサイズを表し、単位はバイトである。

Get-ChildItemコマンドレットの主なオプションは以下の通り。

オプション 説明
-Recurse サブフォルダの結果も表示
-Depth -Recurseを適用する階層の深さを指定
-Name ファイル名・フォルダ名のみ表示
-File ファイルのみ結果を表示
-Filter ファイル名・フォルダ名を絞り込み

以下では、各オプションについて解説する。

-Recurseオプションでサブフォルダも表示

Get-ChildItemコマンドレットに-Recurseオプションを付けて実行すると、 全てのサブフォルダにあるフォルダ・ファイルの一覧が表示される。

PS > Get-ChildItem -Recurse

探索するサブフォルダの階層数を制限する場合は、-Depthオプションを追加する。 -Depthの後に0以上の整数を付けると、その数だけ下の階層を表示する。 -Depth 0のときにはカレントフォルダの結果しか表示しない。

例:3階層下までの結果を表示する

PS > Get-ChildItem -Recurse -Depth 3

-Nameオプションでフォルダ名・ファイル名のみ表示

Get-ChildItemコマンドレットに-Nameオプションを付けて実行すると、 フォルダ・ファイルの名前のみ表示される。

例:

PS C:\Test> Get-ChildItem -Name
Subdir1
Subdir2
aaa.txt
bbb.txt
ccc.txt

-Fileオプションでファイルのみ表示

Get-ChildItemコマンドレットに-Fileオプションを付けて実行すると、 結果からフォルダが除外され、ファイルのみ表示される。

例:

PS C:\Test> Get-ChildItem  -File
    ディレクトリ: C:\Test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/07/18     10:07             11 aaa.txt
-a----       2020/07/18     10:07              8 bbb.txt
-a----       2020/07/18     10:08             30 ccc.txt

-Filterオプションでファイル名を絞り込み

Get-ChildItemコマンドレットに-Filterオプションを付けて実行すると、 フォルダ名・ファイル名を絞り込んだ結果が表示される。 -Filterの後に文字列を追加すると、その文字列に一致したファイル名のみ表示される。 文字列にはワイルドカード*を使用できる。

例:拡張子がtxtのファイルのみ表示する

PS C:\Test> Get-ChildItem  -Filter *.txt

まとめ

上記のオプションを組み合わせ、 Get-ChildItem -Recurse -Name -Fileを実行すると、 サブフォルダを含むファイル名を一覧表示される。 ファイル名で抽出する場合には-Filterオプションを追加すれば良い。

参考

PowerShellのGet-ChildItemコマンドレットでファイル名の一覧を取得する(基本編):Tech TIPS - @IT

Get-ChildItemコマンドレットのその他のオプションについては、以下のリファレンスを参照。

Get-ChildItem (Microsoft.PowerShell.Management) - PowerShell | Microsoft Docs