JavaScriptを有効にしてください

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

 ·   ·   4 min read

はじめに

PowerShellでサブフォルダを含むファイル名を一覧表示するには、Get-ChildItem -Recurse -Name -Fileを実行する。エイリアス(別名)を使用するとls -r -n -Fileと短縮できる。さらに、ファイル名で抽出する場合には-Filterオプションを追加する。
本記事では、上記のコマンドについて解説する。

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

バージョン
Windows 10 Home 1909, 21H1
PowerShell 5.1.18362.752, 5.1.19041.1682

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

1
PS > $PSVersionTable

PowerShellの起動

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

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

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

例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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 -r サブフォルダの結果も表示
-Depth -d -Recurseを適用する階層の深さを指定
-Name -n ファイル名・フォルダ名のみ表示
-File ファイルのみ結果を表示
-Filter ファイル名・フォルダ名を絞り込み

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

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

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

1
PS > Get-ChildItem -Recurse

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

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

1
PS > Get-ChildItem -Recurse -Depth 3

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

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

例:

1
2
3
4
5
6
PS C:\Test> Get-ChildItem -Name
Subdir1
Subdir2
aaa.txt
bbb.txt
ccc.txt

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

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

例:

1
2
3
4
5
6
7
8
9
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のファイルのみ表示する

1
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

Powershellでファイル名に連番を振ってリネームする – Helve Tech Blog
Powershellで複数のテキストファイルから文字列を検索 – Helve Tech Blog

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

サイト内検索